diff options
| author | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
|---|---|---|
| committer | ivar <i@oiee.no> | 2024-03-19 01:02:22 +0100 |
| commit | 5f604b3052dab1d51dc130df2470bf330b283ec6 (patch) | |
| tree | ae00e1fe4542850467555b4e3af41964ba8d878b /code/api/Database | |
| parent | 63cf177e8cf22e349534664d59a6926f8b36863d (diff) | |
| download | storage-5f604b3052dab1d51dc130df2470bf330b283ec6.tar.xz storage-5f604b3052dab1d51dc130df2470bf330b283ec6.zip | |
Max lenghts on db schema
Use latest temporal from cdn
Implement majority of translation functionality
Major refinements/bugs
Diffstat (limited to 'code/api/Database')
| -rw-r--r-- | code/api/Database/AppDatabase.cs | 69 | ||||
| -rw-r--r-- | code/api/Database/Models/File.cs | 31 | ||||
| -rw-r--r-- | code/api/Database/Models/Folder.cs | 27 | ||||
| -rw-r--r-- | code/api/Database/Models/Permission.cs | 22 | ||||
| -rw-r--r-- | code/api/Database/Models/PermissionGroup.cs | 21 | ||||
| -rw-r--r-- | code/api/Database/Models/User.cs | 35 | ||||
| -rw-r--r-- | code/api/Database/Models/_Base.cs | 67 |
7 files changed, 153 insertions, 119 deletions
diff --git a/code/api/Database/AppDatabase.cs b/code/api/Database/AppDatabase.cs index 84b4842..3735d89 100644 --- a/code/api/Database/AppDatabase.cs +++ b/code/api/Database/AppDatabase.cs @@ -1,35 +1,40 @@ -namespace I2R.Storage.Api.Database; +using File = Quality.Storage.Api.Database.Models.File; -public class AppDatabase : DbContext +namespace Quality.Storage.Api.Database; + +using File = File; + +public class AppDatabase(DbContextOptions<AppDatabase> options) : DbContext(options) { - public AppDatabase(DbContextOptions<AppDatabase> options) : base(options) { } - public DbSet<User> Users { get; set; } - public DbSet<Models.File> Files { get; set; } - public DbSet<Folder> Folders { get; set; } - public DbSet<Permission> Permissions { get; set; } - public DbSet<PermissionGroup> PermissionGroups { get; set; } + public DbSet<User> Users { get; set; } + public DbSet<File> Files { get; set; } + public DbSet<Folder> Folders { get; set; } + public DbSet<Permission> Permissions { get; set; } + public DbSet<PermissionGroup> PermissionGroups { get; set; } - protected override void OnModelCreating(ModelBuilder modelBuilder) { - modelBuilder.Entity<User>(e => { e.ToTable("users"); }); - modelBuilder.Entity<Models.File>(e => { - e.HasMany(c => c.Permissions); - e.HasOne(c => c.Folder); - e.ToTable("files"); - }); - modelBuilder.Entity<Folder>(e => { - e.HasMany(c => c.Files); - e.HasMany(c => c.Permissions); - e.HasOne(c => c.Parent); - e.ToTable("folders"); - }); - modelBuilder.Entity<PermissionGroup>(e => { - e.HasMany(c => c.Users); - e.ToTable("permission_groups"); - }); - modelBuilder.Entity<Permission>(e => { - e.HasOne(c => c.Group); - e.ToTable("permissions"); - }); - base.OnModelCreating(modelBuilder); - } -}
\ No newline at end of file + protected override void OnModelCreating(ModelBuilder modelBuilder) { + modelBuilder.Entity<User>(e => { + e.ToTable("users"); + }); + modelBuilder.Entity<File>(e => { + e.HasMany(c => c.Permissions); + e.HasOne(c => c.Folder); + e.ToTable("files"); + }); + modelBuilder.Entity<Folder>(e => { + e.HasMany(c => c.Files); + e.HasMany(c => c.Permissions); + e.HasOne(c => c.Parent); + e.ToTable("folders"); + }); + modelBuilder.Entity<PermissionGroup>(e => { + e.HasMany(c => c.Users); + e.ToTable("permission_groups"); + }); + modelBuilder.Entity<Permission>(e => { + e.HasOne(c => c.Group); + e.ToTable("permissions"); + }); + base.OnModelCreating(modelBuilder); + } +} diff --git a/code/api/Database/Models/File.cs b/code/api/Database/Models/File.cs index 66404f8..63d4d75 100644 --- a/code/api/Database/Models/File.cs +++ b/code/api/Database/Models/File.cs @@ -1,16 +1,21 @@ -namespace I2R.Storage.Api.Database.Models; +namespace Quality.Storage.Api.Database.Models; -public class File : Base +public class File : Base.WithOwner { - public File() { } + public File() { } - public File(Guid createdBy) : base(createdBy) { } - public string Name { get; set; } - public string MimeType { get; set; } - public long SizeInBytes { get; set; } - public Folder Folder { get; set; } - public Guid FolderId { get; set; } - public bool IsEncrypted { get; set; } - public bool IsBinned { get; set; } - public List<Permission> Permissions { get; set; } -}
\ No newline at end of file + public File(Guid createdBy) : base(createdBy) { } + + [MaxLength(200)] + public string Name { get; set; } + + [MaxLength(100)] + public string MimeType { get; set; } + + public long SizeInBytes { get; set; } + public Folder Folder { get; set; } + public Guid FolderId { get; set; } + public bool IsEncrypted { get; set; } + public bool IsBinned { get; set; } + public virtual List<Permission> Permissions { get; set; } +} diff --git a/code/api/Database/Models/Folder.cs b/code/api/Database/Models/Folder.cs index ff9515a..118893f 100644 --- a/code/api/Database/Models/Folder.cs +++ b/code/api/Database/Models/Folder.cs @@ -1,15 +1,18 @@ -namespace I2R.Storage.Api.Database.Models; +namespace Quality.Storage.Api.Database.Models; -public class Folder : Base +public class Folder : Base.WithOwner { - public Folder() { } + public Folder() { } - public Folder(Guid createdBy) : base(createdBy) { } - public string Name { get; set; } - public Folder Parent { get; set; } - public Guid? ParentId { get; set; } - public List<File> Files { get; set; } - public List<Permission> Permissions { get; set; } - public bool IsEncrypted { get; set; } - public bool IsBinned { get; set; } -}
\ No newline at end of file + public Folder(Guid createdBy) : base(createdBy) { } + + [MaxLength(200)] + public string Name { get; set; } + + public Folder Parent { get; set; } + public Guid? ParentId { get; set; } + public List<File> Files { get; set; } + public virtual List<Permission> Permissions { get; set; } + public bool IsEncrypted { get; set; } + public bool IsBinned { get; set; } +} diff --git a/code/api/Database/Models/Permission.cs b/code/api/Database/Models/Permission.cs index ae9d2b1..08d579a 100644 --- a/code/api/Database/Models/Permission.cs +++ b/code/api/Database/Models/Permission.cs @@ -1,14 +1,14 @@ -namespace I2R.Storage.Api.Database.Models; +namespace Quality.Storage.Api.Database.Models; -public class Permission : Base +public class Permission : Base.WithOwner { - public Permission() { } + public Permission() { } - public Permission(Guid createdBy) : base(createdBy) { } - public Guid ContentId { get; set; } - public bool IsFile { get; set; } - public bool CanRead { get; set; } - public bool CanWrite { get; set; } - public Guid GroupId { get; set; } - public PermissionGroup Group { get; set; } -}
\ No newline at end of file + public Permission(Guid createdBy) : base(createdBy) { } + public Guid ContentId { get; set; } + public bool IsFile { get; set; } + public bool CanRead { get; set; } + public bool CanWrite { get; set; } + public Guid GroupId { get; set; } + public virtual PermissionGroup Group { get; set; } +} diff --git a/code/api/Database/Models/PermissionGroup.cs b/code/api/Database/Models/PermissionGroup.cs index 54ecffe..0b8ba02 100644 --- a/code/api/Database/Models/PermissionGroup.cs +++ b/code/api/Database/Models/PermissionGroup.cs @@ -1,11 +1,16 @@ -namespace I2R.Storage.Api.Database.Models; +namespace Quality.Storage.Api.Database.Models; -public class PermissionGroup : Base +public class PermissionGroup : Base.WithOwner { - public PermissionGroup() { } + public PermissionGroup() { } - public PermissionGroup(Guid createdBy) : base(createdBy) { } - public string Name { get; set; } - public string Description { get; set; } - public List<User> Users { get; set; } -}
\ No newline at end of file + public PermissionGroup(Guid createdBy) : base(createdBy) { } + + [MaxLength(100)] + public string Name { get; set; } + + [MaxLength(450)] + public string Description { get; set; } + + public virtual List<User> Users { get; set; } +} diff --git a/code/api/Database/Models/User.cs b/code/api/Database/Models/User.cs index cd62bba..ebe80de 100644 --- a/code/api/Database/Models/User.cs +++ b/code/api/Database/Models/User.cs @@ -1,17 +1,26 @@ -namespace I2R.Storage.Api.Database.Models; +namespace Quality.Storage.Api.Database.Models; public class User : Base { - public string Username { get; set; } - public string Password { get; set; } - public EUserRole Role { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - public DateTime? LastLoggedOn { get; set; } + [MaxLength(100)] + public string Username { get; set; } - public IEnumerable<Claim> DefaultClaims() => new List<Claim>() { - new(AppClaims.USER_ID, Id.ToString()), - new(AppClaims.USERNAME, Username), - new(AppClaims.USER_ROLE, UserRole.ToString(Role)) - }; -}
\ No newline at end of file + [MaxLength(100)] + public string Password { get; set; } + + public UserRole Role { get; set; } + + [MaxLength(100)] + public string FirstName { get; set; } + + [MaxLength(100)] + public string LastName { get; set; } + + public DateTime? LastLoggedOn { get; set; } + + public IEnumerable<Claim> DefaultClaims() => new List<Claim> { + new(AppClaims.USER_ID, Id.ToString()), + new(AppClaims.USERNAME, Username), + new(AppClaims.USER_ROLE, UserRoleHelper.ToString(Role)) + }; +} diff --git a/code/api/Database/Models/_Base.cs b/code/api/Database/Models/_Base.cs index 4fdc6c1..0996cc0 100644 --- a/code/api/Database/Models/_Base.cs +++ b/code/api/Database/Models/_Base.cs @@ -1,38 +1,45 @@ -namespace I2R.Storage.Api.Database.Models; +namespace Quality.Storage.Api.Database.Models; public class Base { - public Base() { - Id = Guid.NewGuid(); - CreatedAt = AppDateTime.UtcNow; - } + protected Base() { + Id = Guid.NewGuid(); + CreatedAt = AppDateTime.UtcNow; + } - public Base(Guid createdBy) { - Id = Guid.NewGuid(); - CreatedAt = AppDateTime.UtcNow; - CreatedBy = createdBy; - } + protected Base(Guid createdBy) { + Id = Guid.NewGuid(); + CreatedAt = AppDateTime.UtcNow; + CreatedBy = createdBy; + } - public Guid Id { get; set; } - public DateTime CreatedAt { get; set; } - public DateTime? LastModifiedAt { get; set; } - public DateTime? LastDeletedAt { get; set; } - public Guid? OwningUserId { get; set; } - public Guid? LastModifiedBy { get; set; } - public Guid? LastDeletedBy { get; set; } - public Guid? CreatedBy { get; set; } + public Guid Id { get; set; } + public DateTime CreatedAt { get; set; } + public DateTime? LastModifiedAt { get; set; } + public DateTime? LastDeletedAt { get; set; } + public Guid? LastModifiedBy { get; set; } + public Guid? LastDeletedBy { get; set; } + public Guid? CreatedBy { get; set; } - public void SetDeleted(Guid performingUserId = default) { - LastDeletedAt = AppDateTime.UtcNow; - LastDeletedBy = performingUserId; - } + public void SetDeleted(Guid performingUserId = default) { + LastDeletedAt = AppDateTime.UtcNow; + LastDeletedBy = performingUserId; + } - public void SetModified(Guid performingUserId = default) { - LastModifiedAt = AppDateTime.UtcNow; - LastModifiedBy = performingUserId; - } + public void SetModified(Guid performingUserId = default) { + LastModifiedAt = AppDateTime.UtcNow; + LastModifiedBy = performingUserId; + } - public void SetOwner(Guid ownerId = default) { - OwningUserId = ownerId; - } -}
\ No newline at end of file + public abstract class WithOwner : Base + { + protected WithOwner() { } + protected WithOwner(Guid createdBy) : base(createdBy) { } + + public Guid? OwningUserId { get; set; } + + public void SetOwner(Guid ownerId = default) { + OwningUserId = ownerId; + } + } +} |
