summaryrefslogtreecommitdiffstats
path: root/server/src/Data/Database
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-06-07 01:36:11 +0200
committerivarlovlie <git@ivarlovlie.no>2022-06-07 01:36:11 +0200
commitecdaec6f53cbaf4da2c8a3440d7a288f3497a1cb (patch)
tree651f9dd31e019f0b1d85f83a03553bb5812237cc /server/src/Data/Database
parenta8b44b09a404aee477e735501b828d1b14aad311 (diff)
downloadgreatoffice-ecdaec6f53cbaf4da2c8a3440d7a288f3497a1cb.tar.xz
greatoffice-ecdaec6f53cbaf4da2c8a3440d7a288f3497a1cb.zip
feat: Work in progress more module data models
Diffstat (limited to 'server/src/Data/Database')
-rw-r--r--server/src/Data/Database/Base.cs1
-rw-r--r--server/src/Data/Database/BaseWithOwner.cs7
-rw-r--r--server/src/Data/Database/Customer.cs7
-rw-r--r--server/src/Data/Database/CustomerContact.cs12
-rw-r--r--server/src/Data/Database/CustomerEvent.cs7
-rw-r--r--server/src/Data/Database/Project.cs7
-rw-r--r--server/src/Data/Database/Tenant.cs1
-rw-r--r--server/src/Data/Database/Todo.cs13
-rw-r--r--server/src/Data/Database/TodoComment.cs7
-rw-r--r--server/src/Data/Database/TodoLabel.cs8
-rw-r--r--server/src/Data/Database/TodoProject.cs16
-rw-r--r--server/src/Data/Database/TodoProjectAccessControl.cs11
-rw-r--r--server/src/Data/Database/TodoStatus.cs45
-rw-r--r--server/src/Data/Database/User.cs4
14 files changed, 140 insertions, 6 deletions
diff --git a/server/src/Data/Database/Base.cs b/server/src/Data/Database/Base.cs
index 2439668..90b52da 100644
--- a/server/src/Data/Database/Base.cs
+++ b/server/src/Data/Database/Base.cs
@@ -10,5 +10,6 @@ public class Base
public Guid Id { get; init; }
public DateTime CreatedAt { get; init; }
public DateTime? ModifiedAt { get; private set; }
+ public bool Deleted { get; set; }
public void Modified() => ModifiedAt = DateTime.UtcNow;
}
diff --git a/server/src/Data/Database/BaseWithOwner.cs b/server/src/Data/Database/BaseWithOwner.cs
index bc60b48..8c54aa2 100644
--- a/server/src/Data/Database/BaseWithOwner.cs
+++ b/server/src/Data/Database/BaseWithOwner.cs
@@ -11,14 +11,9 @@ public class BaseWithOwner : Base
UserId = userId;
}
- public Guid UserId { get; set; }
- public User User { get; init; }
+ public Guid? UserId { get; set; }
public Guid? TenantId { get; init; }
- public Tenant Tenant { get; init; }
public Guid? ModifiedById { get; init; }
- public User ModifiedBy { get; init; }
public Guid? CreatedById { get; init; }
- public User CreatedBy { get; init; }
public Guid? DeletedById { get; init; }
- public User DeletedBy { get; init; }
}
diff --git a/server/src/Data/Database/Customer.cs b/server/src/Data/Database/Customer.cs
new file mode 100644
index 0000000..7e83c00
--- /dev/null
+++ b/server/src/Data/Database/Customer.cs
@@ -0,0 +1,7 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class Customer : BaseWithOwner
+{
+ public string Name { get; set; }
+
+}
diff --git a/server/src/Data/Database/CustomerContact.cs b/server/src/Data/Database/CustomerContact.cs
new file mode 100644
index 0000000..f5a951d
--- /dev/null
+++ b/server/src/Data/Database/CustomerContact.cs
@@ -0,0 +1,12 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class CustomerContact : BaseWithOwner
+{
+ public Customer Customer { get; set; }
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Email { get; set; }
+ public string Phone { get; set; }
+ public string WorkTitle { get; set; }
+ public string Note { get; set; }
+}
diff --git a/server/src/Data/Database/CustomerEvent.cs b/server/src/Data/Database/CustomerEvent.cs
new file mode 100644
index 0000000..da3e3ed
--- /dev/null
+++ b/server/src/Data/Database/CustomerEvent.cs
@@ -0,0 +1,7 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class CustomerEvent : BaseWithOwner
+{
+ public Customer Customer { get; set; }
+ public string Name { get; set; }
+}
diff --git a/server/src/Data/Database/Project.cs b/server/src/Data/Database/Project.cs
new file mode 100644
index 0000000..7e694ee
--- /dev/null
+++ b/server/src/Data/Database/Project.cs
@@ -0,0 +1,7 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class Project : BaseWithOwner
+{
+ public string Name { get; set; }
+ public Guid? CustomerId { get; set; }
+}
diff --git a/server/src/Data/Database/Tenant.cs b/server/src/Data/Database/Tenant.cs
index 3028d13..b185c7a 100644
--- a/server/src/Data/Database/Tenant.cs
+++ b/server/src/Data/Database/Tenant.cs
@@ -7,4 +7,5 @@ public class Tenant : BaseWithOwner
public string ContactEmail { get; set; }
public Guid MasterUserId { get; set; }
public string MasterUserPassword { get; set; }
+ public ICollection<User> Users { get; set; }
}
diff --git a/server/src/Data/Database/Todo.cs b/server/src/Data/Database/Todo.cs
new file mode 100644
index 0000000..5fe3c9a
--- /dev/null
+++ b/server/src/Data/Database/Todo.cs
@@ -0,0 +1,13 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class Todo : BaseWithOwner
+{
+ public int PublicId { get; set; }
+ public TodoStatus Status { get; set; }
+ public TodoProject Project { get; set; }
+ public Guid? AssignedUserId { get; set; }
+ public string Title { get; set; }
+ public string Description { get; set; }
+ public ICollection<TodoLabel> Labels { get; set; }
+ public ICollection<TodoComment> Comments { get; set; }
+}
diff --git a/server/src/Data/Database/TodoComment.cs b/server/src/Data/Database/TodoComment.cs
new file mode 100644
index 0000000..44dcbed
--- /dev/null
+++ b/server/src/Data/Database/TodoComment.cs
@@ -0,0 +1,7 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TodoComment : BaseWithOwner
+{
+ public string Value { get; set; }
+ public Todo Todo { get; set; }
+}
diff --git a/server/src/Data/Database/TodoLabel.cs b/server/src/Data/Database/TodoLabel.cs
new file mode 100644
index 0000000..7753ade
--- /dev/null
+++ b/server/src/Data/Database/TodoLabel.cs
@@ -0,0 +1,8 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TodoLabel : BaseWithOwner
+{
+ public string Name { get; set; }
+ public string Color { get; set; }
+ public Todo Todo { get; set; }
+}
diff --git a/server/src/Data/Database/TodoProject.cs b/server/src/Data/Database/TodoProject.cs
new file mode 100644
index 0000000..0a4a7be
--- /dev/null
+++ b/server/src/Data/Database/TodoProject.cs
@@ -0,0 +1,16 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TodoProject : BaseWithOwner
+{
+ public string Name { get; set; }
+ public TodoVisibility Visibility { get; set; }
+ public Guid? ProjectId { get; set; }
+}
+
+public enum TodoVisibility
+{
+ PRIVATE = 0,
+ UNLISTED = 1,
+ TENANT_WIDE = 2,
+ PUBLIC = 3,
+}
diff --git a/server/src/Data/Database/TodoProjectAccessControl.cs b/server/src/Data/Database/TodoProjectAccessControl.cs
new file mode 100644
index 0000000..964f831
--- /dev/null
+++ b/server/src/Data/Database/TodoProjectAccessControl.cs
@@ -0,0 +1,11 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TodoProjectAccessControl
+{
+ public TodoProject Project { get; set; }
+ public Guid? UserId { get; set; }
+ public bool Browse { get; set; }
+ public bool Submit { get; set; }
+ public bool Comment { get; set; }
+ public bool Edit { get; set; }
+}
diff --git a/server/src/Data/Database/TodoStatus.cs b/server/src/Data/Database/TodoStatus.cs
new file mode 100644
index 0000000..416212d
--- /dev/null
+++ b/server/src/Data/Database/TodoStatus.cs
@@ -0,0 +1,45 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TodoStatus : BaseWithOwner
+{
+ public string Name { get; set; }
+ public string Color { get; set; }
+ public Todo Todo { get; set; }
+
+ public static List<TodoStatus> GetDefaultStatusSetForTenant(Guid tenantId) {
+ return new List<TodoStatus>() {
+ new() {
+ Name = "Reported",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "Resolved",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "Fixed",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "Implemented",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "Won't fix",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "By design",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "Invalid",
+ TenantId = tenantId
+ },
+ new() {
+ Name = "Duplicate",
+ TenantId = tenantId
+ }
+ };
+ }
+}
diff --git a/server/src/Data/Database/User.cs b/server/src/Data/Database/User.cs
index c5063f6..83b8338 100644
--- a/server/src/Data/Database/User.cs
+++ b/server/src/Data/Database/User.cs
@@ -8,8 +8,12 @@ public class User : Base
Username = username;
}
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Email { get; set; }
public string Username { get; set; }
public string Password { get; set; }
+ public ICollection<Tenant> Tenants { get; set; }
public void HashAndSetPassword(string password) {