diff --git a/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj b/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj
index 9f5c4f4ab..a02de8e18 100644
--- a/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj
+++ b/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj
@@ -4,4 +4,8 @@
netstandard2.0
+
+
+
+
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Contracts/ISurrogateKey.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Contracts/ISurrogateKey.cs
new file mode 100644
index 000000000..891bf5e04
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Contracts/ISurrogateKey.cs
@@ -0,0 +1,7 @@
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts
+{
+ public interface ISurrogateKey
+ {
+ long Id { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs
new file mode 100644
index 000000000..7e3491eb1
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs
@@ -0,0 +1,22 @@
+using System;
+using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts;
+
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class FilterList : ISurrogateKey
+ {
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public string Description { get; set; }
+ public Uri ViewUrl { get; set; }
+ public Uri HomeUrl { get; set; }
+ public Uri OnionUrl { get; set; }
+ public Uri PolicyUrl { get; set; }
+ public Uri SubmissionUrl { get; set; }
+ public Uri IssuesUrl { get; set; }
+ public Uri ForumUrl { get; set; }
+ public Uri ChatUrl { get; set; }
+ public string EmailAddress { get; set; }
+ public Uri DonateUrl { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs
new file mode 100644
index 000000000..92fc8e630
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs
@@ -0,0 +1,8 @@
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class Language
+ {
+ public string Iso6391 { get; set; }
+ public string Name { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs
new file mode 100644
index 000000000..0e09b3278
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs
@@ -0,0 +1,13 @@
+using System;
+using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts;
+
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class License: ISurrogateKey
+ {
+ public long Id { get; set; }
+ public string GitHubKey { get; set; }
+ public string Name { get; set; }
+ public Uri Url { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs
new file mode 100644
index 000000000..c91512791
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs
@@ -0,0 +1,14 @@
+using System;
+using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts;
+
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class Maintainer : ISurrogateKey
+ {
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public Uri Url { get; set; }
+ public string EmailAddress { get; set; }
+ public string TwitterHandle { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs
new file mode 100644
index 000000000..ea170894d
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs
@@ -0,0 +1,15 @@
+using System;
+using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts;
+
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class Software : ISurrogateKey
+ {
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public string Description { get; set; }
+ public Uri HomeUrl { get; set; }
+ public Uri DownloadUrl { get; set; }
+ public bool SupportsAbpUrlScheme { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs
new file mode 100644
index 000000000..ca489045b
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs
@@ -0,0 +1,13 @@
+using System;
+using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts;
+
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class Syntax : ISurrogateKey
+ {
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public string Description { get; set; }
+ public Uri Url { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs
new file mode 100644
index 000000000..b6092ae44
--- /dev/null
+++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs
@@ -0,0 +1,11 @@
+using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Contracts;
+
+namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities
+{
+ public class Tag : ISurrogateKey
+ {
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public string Description { get; set; }
+ }
+}
\ No newline at end of file