diff --git a/ProjectLighthouse/Database/DatabaseContext.cs b/ProjectLighthouse/Database/DatabaseContext.cs index 0a2e09e1..699fc2f7 100644 --- a/ProjectLighthouse/Database/DatabaseContext.cs +++ b/ProjectLighthouse/Database/DatabaseContext.cs @@ -1,4 +1,5 @@ using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Types.Entities.Activity; using LBPUnion.ProjectLighthouse.Types.Entities.Interaction; using LBPUnion.ProjectLighthouse.Types.Entities.Level; using LBPUnion.ProjectLighthouse.Types.Entities.Maintenance; @@ -26,6 +27,10 @@ public partial class DatabaseContext : DbContext public DbSet WebTokens { get; set; } #endregion + #region Activity + public DbSet Activities { get; set; } + #endregion + #region Users public DbSet Comments { get; set; } public DbSet LastContacts { get; set; } @@ -81,6 +86,16 @@ public partial class DatabaseContext : DbContext public DatabaseContext(DbContextOptions options) : base(options) { } + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().UseTpcMappingStrategy(); + modelBuilder.Entity().UseTpcMappingStrategy(); + modelBuilder.Entity().UseTpcMappingStrategy(); + modelBuilder.Entity().UseTpcMappingStrategy(); + modelBuilder.Entity().UseTpcMappingStrategy(); + base.OnModelCreating(modelBuilder); + } + public static DatabaseContext CreateNewInstance() { DbContextOptionsBuilder builder = new(); diff --git a/ProjectLighthouse/Types/Activity/EventType.cs b/ProjectLighthouse/Types/Activity/EventType.cs new file mode 100644 index 00000000..7e0c74d7 --- /dev/null +++ b/ProjectLighthouse/Types/Activity/EventType.cs @@ -0,0 +1,26 @@ +namespace LBPUnion.ProjectLighthouse.Types.Activity; + +public enum EventType +{ + HeartLevel, + UnheartLevel, + HeartUser, + UnheartUser, + PlayLevel, + RateLevel, + TagLevel, + CommentOnLevel, + DeleteLevelComment, + UploadPhoto, + PublishLevel, + UnpublishLevel, + Score, + NewsPost, + MMPickLevel, + DpadRateLevel, + ReviewLevel, + CommentOnUser, + CreatePlaylist, + HeartPlaylist, + AddLevelToPlaylist, +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/ActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/ActivityEntity.cs new file mode 100644 index 00000000..cdb81944 --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/ActivityEntity.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using LBPUnion.ProjectLighthouse.Types.Activity; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; + +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +public class ActivityEntity +{ + [Key] + public int ActivityId { get; set; } + + public long Timestamp { get; set; } + + public int UserId { get; set; } + + [ForeignKey(nameof(UserId))] + public UserEntity User { get; set; } + + public EventType Type { get; set; } +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/CommentActivityEntry.cs b/ProjectLighthouse/Types/Entities/Activity/CommentActivityEntry.cs new file mode 100644 index 00000000..4aa02e0d --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/CommentActivityEntry.cs @@ -0,0 +1,9 @@ +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +/// +/// Supported event types: CommentOnUser, CommentOnLevel, DeleteLevelComment +/// +public class CommentActivityEntry +{ + +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/LevelActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/LevelActivityEntity.cs new file mode 100644 index 00000000..e0dac177 --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/LevelActivityEntity.cs @@ -0,0 +1,17 @@ +using System.ComponentModel.DataAnnotations.Schema; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; + +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +/// +/// Supported event types: play_level, heart_level, publish_level, +/// +public class LevelActivityEntity : ActivityEntity +{ + public int SlotId { get; set; } + + [ForeignKey(nameof(SlotId))] + public SlotEntity Slot { get; set; } + + +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/NewsActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/NewsActivityEntity.cs new file mode 100644 index 00000000..647db324 --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/NewsActivityEntity.cs @@ -0,0 +1,11 @@ +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +/// +/// Supported event types: NewsPost +/// +public class NewsActivityEntity : ActivityEntity +{ + public string Title { get; set; } = ""; + + public string Body { get; set; } = ""; +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/PhotoActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/PhotoActivityEntity.cs new file mode 100644 index 00000000..6db40d59 --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/PhotoActivityEntity.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations.Schema; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; + +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +/// +/// Supported event types: UploadPhoto +/// +public class PhotoActivityEntity : ActivityEntity +{ + public int PhotoId { get; set; } + + [ForeignKey(nameof(PhotoId))] + public PhotoEntity Photo { get; set; } + +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/PlaylistActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/PlaylistActivityEntity.cs new file mode 100644 index 00000000..502baf4b --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/PlaylistActivityEntity.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations.Schema; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; + +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +public class PlaylistActivityEntity : ActivityEntity +{ + public int PlaylistId { get; set; } + + [ForeignKey(nameof(PlaylistId))] + public PlaylistEntity Playlist { get; set; } +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/ScoreActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/ScoreActivityEntity.cs new file mode 100644 index 00000000..17c500ac --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/ScoreActivityEntity.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations.Schema; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; + +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +/// +/// Supported event types: Score +/// +public class ScoreActivityEntity : ActivityEntity +{ + public int ScoreId { get; set; } + + [ForeignKey(nameof(ScoreId))] + public ScoreEntity Score { get; set; } +} \ No newline at end of file diff --git a/ProjectLighthouse/Types/Entities/Activity/UserActivityEntity.cs b/ProjectLighthouse/Types/Entities/Activity/UserActivityEntity.cs new file mode 100644 index 00000000..74856367 --- /dev/null +++ b/ProjectLighthouse/Types/Entities/Activity/UserActivityEntity.cs @@ -0,0 +1,9 @@ +namespace LBPUnion.ProjectLighthouse.Types.Entities.Activity; + +/// +/// Supported event types: HeartUser, UnheartUser +/// +public class UserActivityEntity : ActivityEntity +{ + +} \ No newline at end of file