diff --git a/Tagashi File Hub.sln b/Tagashi File Hub.sln
index 226467a..2f1ab1d 100644
--- a/Tagashi File Hub.sln
+++ b/Tagashi File Hub.sln
@@ -7,11 +7,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tagashi File Hub", "src\Tag
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TagashiFileHub.Core", "src\TagashiFileHub.Core\TagashiFileHub.Core.csproj", "{39536C05-9C87-44CA-A753-6A317F252666}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagashiFIleHub.Service", "src\TagashiFIleHub.Service\TagashiFIleHub.Service.csproj", "{368C0084-EBB4-4A9A-9E01-84C48CF184D9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TagashiFIleHub.Service", "src\TagashiFIleHub.Service\TagashiFIleHub.Service.csproj", "{368C0084-EBB4-4A9A-9E01-84C48CF184D9}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagashiFileHub.Communication.Abstractions", "src\TagashiFileHub.Communication.Abstractions\TagashiFileHub.Communication.Abstractions.csproj", "{587B3D46-1114-4A84-8F33-4EEA501AE613}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TagashiFileHub.Communication.Abstractions", "src\TagashiFileHub.Communication.Abstractions\TagashiFileHub.Communication.Abstractions.csproj", "{587B3D46-1114-4A84-8F33-4EEA501AE613}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagashiFileHub.Communication.IPC", "src\TagashiFileHub.Communication.IPC\TagashiFileHub.Communication.IPC.csproj", "{64A274BB-678E-42C5-BD69-6BF7F04AD026}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TagashiFileHub.Communication.IPC", "src\TagashiFileHub.Communication.IPC\TagashiFileHub.Communication.IPC.csproj", "{64A274BB-678E-42C5-BD69-6BF7F04AD026}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagashiFileHub.Core.Abstractions", "src\TagashiFileHub.Core.Abstractions\TagashiFileHub.Core.Abstractions.csproj", "{ADF7B751-178A-4ED7-8DEC-CF3FE723A708}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -39,6 +41,10 @@ Global
{64A274BB-678E-42C5-BD69-6BF7F04AD026}.Debug|Any CPU.Build.0 = Debug|Any CPU
{64A274BB-678E-42C5-BD69-6BF7F04AD026}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64A274BB-678E-42C5-BD69-6BF7F04AD026}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ADF7B751-178A-4ED7-8DEC-CF3FE723A708}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ADF7B751-178A-4ED7-8DEC-CF3FE723A708}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ADF7B751-178A-4ED7-8DEC-CF3FE723A708}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ADF7B751-178A-4ED7-8DEC-CF3FE723A708}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/TagashiFIleHub.Service/TagashiFIleHub.Service.csproj b/src/TagashiFIleHub.Service/TagashiFIleHub.Service.csproj
index dbfb89a..98a9c0b 100644
--- a/src/TagashiFIleHub.Service/TagashiFIleHub.Service.csproj
+++ b/src/TagashiFIleHub.Service/TagashiFIleHub.Service.csproj
@@ -15,5 +15,6 @@
+
diff --git a/src/TagashiFileHub.Core.Abstractions/Files/IFile.cs b/src/TagashiFileHub.Core.Abstractions/Files/IFile.cs
new file mode 100644
index 0000000..013091e
--- /dev/null
+++ b/src/TagashiFileHub.Core.Abstractions/Files/IFile.cs
@@ -0,0 +1,9 @@
+namespace TagashiFileHub.Core.Abstractions.Files;
+
+public interface IFile : IUnique
+{
+ public FileInfo TrueFile();
+ public IAsyncEnumerable GetTagsAsync();
+ public ITag? AddTag(ITag tag);
+ public ITag? AddTag(string tagName);
+}
\ No newline at end of file
diff --git a/src/TagashiFileHub.Core.Abstractions/Files/ITag.cs b/src/TagashiFileHub.Core.Abstractions/Files/ITag.cs
new file mode 100644
index 0000000..f12560f
--- /dev/null
+++ b/src/TagashiFileHub.Core.Abstractions/Files/ITag.cs
@@ -0,0 +1,6 @@
+namespace TagashiFileHub.Core.Abstractions.Files;
+
+public interface ITag : IUnique
+{
+ string Name { get; set; }
+}
\ No newline at end of file
diff --git a/src/TagashiFileHub.Core.Abstractions/IUnique.cs b/src/TagashiFileHub.Core.Abstractions/IUnique.cs
new file mode 100644
index 0000000..7d1db89
--- /dev/null
+++ b/src/TagashiFileHub.Core.Abstractions/IUnique.cs
@@ -0,0 +1,6 @@
+namespace TagashiFileHub.Core.Abstractions;
+
+public interface IUnique
+{
+ T Id { get; set; }
+}
\ No newline at end of file
diff --git a/src/TagashiFileHub.Core.Abstractions/TagashiFileHub.Core.Abstractions.csproj b/src/TagashiFileHub.Core.Abstractions/TagashiFileHub.Core.Abstractions.csproj
new file mode 100644
index 0000000..cfadb03
--- /dev/null
+++ b/src/TagashiFileHub.Core.Abstractions/TagashiFileHub.Core.Abstractions.csproj
@@ -0,0 +1,9 @@
+
+
+
+ net7.0
+ enable
+ enable
+
+
+
diff --git a/src/TagashiFileHub.Core/Class1.cs b/src/TagashiFileHub.Core/Class1.cs
deleted file mode 100644
index 0c11aa6..0000000
--- a/src/TagashiFileHub.Core/Class1.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace TagashiFileHub.Core
-{
- public class Class1
- {
-
- }
-}
\ No newline at end of file
diff --git a/src/TagashiFileHub.Core/TagashiFileHub.Core.csproj b/src/TagashiFileHub.Core/TagashiFileHub.Core.csproj
index cfadb03..1ba20eb 100644
--- a/src/TagashiFileHub.Core/TagashiFileHub.Core.csproj
+++ b/src/TagashiFileHub.Core/TagashiFileHub.Core.csproj
@@ -6,4 +6,9 @@
enable
+
+
+
+
+
diff --git a/src/TagashiFileHub.Core/UniqueObject.cs b/src/TagashiFileHub.Core/UniqueObject.cs
new file mode 100644
index 0000000..2b1288c
--- /dev/null
+++ b/src/TagashiFileHub.Core/UniqueObject.cs
@@ -0,0 +1,13 @@
+using TagashiFileHub.Core.Abstractions;
+
+namespace TagashiFileHub.Core;
+
+public class UniqueObject : IUnique
+{
+ public string Id { get; set; }
+
+ protected string CreateNewId()
+ {
+ return new Guid().ToString();
+ }
+}
\ No newline at end of file