aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/Database
diff options
context:
space:
mode:
authorivar <i@oiee.no>2024-03-19 01:02:22 +0100
committerivar <i@oiee.no>2024-03-19 01:02:22 +0100
commit5f604b3052dab1d51dc130df2470bf330b283ec6 (patch)
treeae00e1fe4542850467555b4e3af41964ba8d878b /code/api/Database
parent63cf177e8cf22e349534664d59a6926f8b36863d (diff)
downloadstorage-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.cs69
-rw-r--r--code/api/Database/Models/File.cs31
-rw-r--r--code/api/Database/Models/Folder.cs27
-rw-r--r--code/api/Database/Models/Permission.cs22
-rw-r--r--code/api/Database/Models/PermissionGroup.cs21
-rw-r--r--code/api/Database/Models/User.cs35
-rw-r--r--code/api/Database/Models/_Base.cs67
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;
+ }
+ }
+}