Lukas Angerer 3 жил өмнө
parent
commit
8df38e39e0

+ 21 - 0
src/RunnersMeet.Server/Domain/Event.cs

@@ -0,0 +1,21 @@
+using LiteDB;
+
+namespace RunnersMeet.Server.Domain;
+
+public class Event : IUserData
+{
+	public ObjectId EventId { get; set; } = ObjectId.Empty;
+	[BsonRef("users")]
+	public UserProfile Owner { get; set; } = new UserProfile();
+
+	public DateTime StartTime { get; set; }
+
+	public TimeSpan Duration { get; set; }
+
+	public string Title { get; set; } = String.Empty;
+
+	public string Description { get; set; } = String.Empty;
+
+	[BsonRef("tracks")]
+	public Track? Track { get; set; }
+}

+ 9 - 0
src/RunnersMeet.Server/Domain/RegistrationState.cs

@@ -0,0 +1,9 @@
+namespace RunnersMeet.Server.Domain;
+
+public enum RegistrationState
+{
+	Unknown = 0,
+	Yes,
+	No,
+	Maybe,
+}

+ 13 - 0
src/RunnersMeet.Server/Persistence/Database.cs

@@ -11,6 +11,10 @@ public class Database : IDatabase
 
 	public ILiteCollection<UserProfile> Users { get; }
 
+	public ILiteCollection<Event> Events { get; }
+
+	public ILiteCollection<Registration> Registrations { get; }
+
 	public Database(IPersistenceOptions persistenceOptions)
 	{
 		_db = new LiteDatabase(persistenceOptions.DataFilePath);
@@ -22,5 +26,14 @@ public class Database : IDatabase
 
 		Users = _db.GetCollection<UserProfile>("users");
 		Users.EnsureIndex(u => u.UserId);
+
+		Events = _db.GetCollection<Event>("events")
+			.Include(e => e.Owner);
+		Events.EnsureIndex(e => e.Owner);
+		Events.EnsureIndex(e => e.Title);
+
+		Registrations = _db.GetCollection<Registration>("registrations");
+		Registrations.EnsureIndex(r => r.Owner);
+		Registrations.EnsureIndex(r => r.Event);
 	}
 }

+ 15 - 0
src/RunnersMeet.Server/Persistence/Registration.cs

@@ -0,0 +1,15 @@
+using LiteDB;
+using RunnersMeet.Server.Domain;
+
+namespace RunnersMeet.Server.Persistence;
+
+public class Registration : IUserData
+{
+	[BsonRef("users")]
+	public UserProfile Owner { get; set; } = new UserProfile();
+
+	[BsonRef("events")]
+	public Event Event { get; set; } = new Event();
+
+	public RegistrationState Status { get; set; }
+}