diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-12-21 23:37:23 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-12-21 23:37:23 +0100 |
| commit | 82ade3c31fb17b662feec59e9e654ceb66edbb7a (patch) | |
| tree | 26443c41c55d2cd2ae46fdd0d663aca84b779ffe /code/api/Database/Models | |
| parent | e60703aadca7d423c0fbfb189d5ef439fc1df072 (diff) | |
| download | storage-82ade3c31fb17b662feec59e9e654ceb66edbb7a.tar.xz storage-82ade3c31fb17b662feec59e9e654ceb66edbb7a.zip | |
feat: Add initial schema and start login
Diffstat (limited to 'code/api/Database/Models')
| -rw-r--r-- | code/api/Database/Models/File.cs | 13 | ||||
| -rw-r--r-- | code/api/Database/Models/Folder.cs | 10 | ||||
| -rw-r--r-- | code/api/Database/Models/Permission.cs | 11 | ||||
| -rw-r--r-- | code/api/Database/Models/PermissionGroup.cs | 8 | ||||
| -rw-r--r-- | code/api/Database/Models/User.cs | 23 | ||||
| -rw-r--r-- | code/api/Database/Models/_Base.cs | 34 |
6 files changed, 99 insertions, 0 deletions
diff --git a/code/api/Database/Models/File.cs b/code/api/Database/Models/File.cs new file mode 100644 index 0000000..b1f51a5 --- /dev/null +++ b/code/api/Database/Models/File.cs @@ -0,0 +1,13 @@ +namespace I2R.Storage.Api.Database.Models; + +public class File : Base +{ + 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 diff --git a/code/api/Database/Models/Folder.cs b/code/api/Database/Models/Folder.cs new file mode 100644 index 0000000..ecfed1e --- /dev/null +++ b/code/api/Database/Models/Folder.cs @@ -0,0 +1,10 @@ +namespace I2R.Storage.Api.Database.Models; + +public class Folder : Base +{ + public string Name { 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 diff --git a/code/api/Database/Models/Permission.cs b/code/api/Database/Models/Permission.cs new file mode 100644 index 0000000..3076d0e --- /dev/null +++ b/code/api/Database/Models/Permission.cs @@ -0,0 +1,11 @@ +namespace I2R.Storage.Api.Database.Models; + +public class Permission : Base +{ + 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 diff --git a/code/api/Database/Models/PermissionGroup.cs b/code/api/Database/Models/PermissionGroup.cs new file mode 100644 index 0000000..712f0cb --- /dev/null +++ b/code/api/Database/Models/PermissionGroup.cs @@ -0,0 +1,8 @@ +namespace I2R.Storage.Api.Database.Models; + +public class PermissionGroup : Base +{ + public string Name { get; set; } + public string Description { get; set; } + public List<User> Users { get; set; } +}
\ No newline at end of file diff --git a/code/api/Database/Models/User.cs b/code/api/Database/Models/User.cs new file mode 100644 index 0000000..7f7b0e9 --- /dev/null +++ b/code/api/Database/Models/User.cs @@ -0,0 +1,23 @@ +using System.Security.Claims; + +namespace I2R.Storage.Api.Database.Models; + +public class User : Base +{ + public User() { } + + public User(Guid createdBy) : base(createdBy) { } + 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; } + + + 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 diff --git a/code/api/Database/Models/_Base.cs b/code/api/Database/Models/_Base.cs new file mode 100644 index 0000000..2a05a3a --- /dev/null +++ b/code/api/Database/Models/_Base.cs @@ -0,0 +1,34 @@ +namespace I2R.Storage.Api.Database.Models; + +public class Base +{ + public Base() { + Id = Guid.NewGuid(); + CreatedAt = AppDateTime.UtcNow; + } + + public 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 void SetDeleted(Guid performingUserId = default) { + LastDeletedAt = AppDateTime.UtcNow; + LastDeletedBy = performingUserId; + } + + public void SetModified(Guid performingUserId = default) { + LastModifiedAt = AppDateTime.UtcNow; + LastModifiedBy = performingUserId; + } +}
\ No newline at end of file |
