From 38dc09ab12dfc2e1d98dc15f6805373fc5e6e33b Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Sun, 21 Jul 2024 09:52:43 +0200 Subject: [PATCH] rework model to have a client and server variant --- OwnChar/Api/Managers/ICharacterManager.cs | 12 ------- OwnChar/Api/Managers/IGroupsManager.cs | 14 -------- OwnChar/Api/Managers/IUserManager.cs | 12 ------- OwnChar/Api/Responses/LoginResponse.cs | 9 ----- OwnChar/Api/Updates/GroupUpdate.cs | 7 ---- OwnChar/Base/Data/MemberLevel.cs | 10 ++++++ .../Data/Model/CharacterBase.cs} | 4 +-- .../Group.cs => Base/Data/Model/GroupBase.cs} | 4 +-- OwnChar/Base/Data/Model/MemberEntryBase.cs | 8 +++++ .../Data/Model/PropertyBase.cs} | 4 +-- .../Base/Data/Model/PropertyCategoryBase.cs | 6 ++++ .../Data/Model/UserAccountBase.cs} | 5 ++- OwnChar/Base/Data/Model/UserProfileBase.cs | 6 ++++ OwnChar/{Model => Base/Data}/OwnCharObject.cs | 2 +- .../Data/Requests/GroupMemberAddRequest.cs | 8 +++++ .../Data/Requests/GroupMemberRemoveRequest.cs | 8 +++++ OwnChar/Base/Data/Requests/LoginRequest.cs | 9 +++++ OwnChar/Base/Data/Requests/LogoutRequest.cs | 5 +++ OwnChar/Base/Data/Requests/UpdateRequest.cs | 8 +++++ OwnChar/Base/Data/Responses/LoginResponse.cs | 10 ++++++ OwnChar/Base/Data/Updates/GroupUpdate.cs | 19 +++++++++++ .../Base/Data/Updates/OwnCharObjectUpdate.cs | 15 ++++++++ OwnChar/{Model => Base/Data}/UserType.cs | 2 +- .../Data/Clients/CharactersApiClient.cs | 5 +++ .../Client/Data/Clients/GroupsApiClient.cs | 5 +++ OwnChar/Client/Data/Clients/LoginApiClient.cs | 14 ++++++++ OwnChar/Client/Data/Clients/UsersApiClient.cs | 5 +++ OwnChar/Client/Data/Model/Character.cs | 13 +++++++ OwnChar/Client/Data/Model/Group.cs | 14 ++++++++ OwnChar/Client/Data/Model/MemberEntry.cs | 13 +++++++ OwnChar/Client/Data/Model/Property.cs | 13 +++++++ OwnChar/Client/Data/Model/PropertyCategory.cs | 12 +++++++ OwnChar/Client/Data/Model/UserAccount.cs | 14 ++++++++ OwnChar/Client/Data/Model/UserProfile.cs | 12 +++++++ OwnChar/{ => Client/Data}/OwnCharApiClient.cs | 2 +- .../Managers => Client}/IOwnCharManager.cs | 13 +++++-- .../{ => Client}/Managers/CharacterManager.cs | 28 +++++++-------- .../{ => Client}/Managers/GroupsManager.cs | 34 +++++++++---------- OwnChar/Client/Managers/ICharacterManager.cs | 12 +++++++ OwnChar/Client/Managers/IGroupsManager.cs | 14 ++++++++ OwnChar/Client/Managers/IUserManager.cs | 12 +++++++ OwnChar/{ => Client}/Managers/UserManager.cs | 22 ++++++------ OwnChar/{ => Client}/OwnCharManager.cs | 8 ++--- .../{Api => Client}/OwnCharManagerModule.cs | 4 +-- OwnChar/Clients/CharactersApiClient.cs | 5 --- OwnChar/Clients/GroupsApiClient.cs | 5 --- OwnChar/Clients/LoginApiClient.cs | 5 --- OwnChar/Clients/UsersApiClient.cs | 5 --- OwnChar/Model/PropertyCategory.cs | 6 ---- OwnChar/Model/UserProfile.cs | 6 ---- OwnChar/OwnChar.csproj | 4 --- OwnChar/OwnCharExtensions.cs | 5 +-- OwnChar/{ => Server}/Data/DatabaseContext.cs | 0 OwnChar/Server/Data/Model/CharacterDb.cs | 11 ++++++ OwnChar/Server/Data/Model/GroupDb.cs | 16 +++++++++ OwnChar/Server/Data/Model/MemberEntryDb.cs | 15 ++++++++ .../Server/Data/Model/PropertyCategoryDb.cs | 7 ++++ OwnChar/Server/Data/Model/PropertyDb.cs | 7 ++++ OwnChar/Server/Data/Model/UserAccountDb.cs | 9 +++++ OwnChar/Server/Data/Model/UserProfileDb.cs | 8 +++++ 60 files changed, 411 insertions(+), 159 deletions(-) delete mode 100644 OwnChar/Api/Managers/ICharacterManager.cs delete mode 100644 OwnChar/Api/Managers/IGroupsManager.cs delete mode 100644 OwnChar/Api/Managers/IUserManager.cs delete mode 100644 OwnChar/Api/Responses/LoginResponse.cs delete mode 100644 OwnChar/Api/Updates/GroupUpdate.cs create mode 100644 OwnChar/Base/Data/MemberLevel.cs rename OwnChar/{Model/Character.cs => Base/Data/Model/CharacterBase.cs} (52%) rename OwnChar/{Model/Group.cs => Base/Data/Model/GroupBase.cs} (63%) create mode 100644 OwnChar/Base/Data/Model/MemberEntryBase.cs rename OwnChar/{Model/Property.cs => Base/Data/Model/PropertyBase.cs} (52%) create mode 100644 OwnChar/Base/Data/Model/PropertyCategoryBase.cs rename OwnChar/{Model/UserAccount.cs => Base/Data/Model/UserAccountBase.cs} (53%) create mode 100644 OwnChar/Base/Data/Model/UserProfileBase.cs rename OwnChar/{Model => Base/Data}/OwnCharObject.cs (69%) create mode 100644 OwnChar/Base/Data/Requests/GroupMemberAddRequest.cs create mode 100644 OwnChar/Base/Data/Requests/GroupMemberRemoveRequest.cs create mode 100644 OwnChar/Base/Data/Requests/LoginRequest.cs create mode 100644 OwnChar/Base/Data/Requests/LogoutRequest.cs create mode 100644 OwnChar/Base/Data/Requests/UpdateRequest.cs create mode 100644 OwnChar/Base/Data/Responses/LoginResponse.cs create mode 100644 OwnChar/Base/Data/Updates/GroupUpdate.cs create mode 100644 OwnChar/Base/Data/Updates/OwnCharObjectUpdate.cs rename OwnChar/{Model => Base/Data}/UserType.cs (67%) create mode 100644 OwnChar/Client/Data/Clients/CharactersApiClient.cs create mode 100644 OwnChar/Client/Data/Clients/GroupsApiClient.cs create mode 100644 OwnChar/Client/Data/Clients/LoginApiClient.cs create mode 100644 OwnChar/Client/Data/Clients/UsersApiClient.cs create mode 100644 OwnChar/Client/Data/Model/Character.cs create mode 100644 OwnChar/Client/Data/Model/Group.cs create mode 100644 OwnChar/Client/Data/Model/MemberEntry.cs create mode 100644 OwnChar/Client/Data/Model/Property.cs create mode 100644 OwnChar/Client/Data/Model/PropertyCategory.cs create mode 100644 OwnChar/Client/Data/Model/UserAccount.cs create mode 100644 OwnChar/Client/Data/Model/UserProfile.cs rename OwnChar/{ => Client/Data}/OwnCharApiClient.cs (71%) rename OwnChar/{Api/Managers => Client}/IOwnCharManager.cs (62%) rename OwnChar/{ => Client}/Managers/CharacterManager.cs (61%) rename OwnChar/{ => Client}/Managers/GroupsManager.cs (71%) create mode 100644 OwnChar/Client/Managers/ICharacterManager.cs create mode 100644 OwnChar/Client/Managers/IGroupsManager.cs create mode 100644 OwnChar/Client/Managers/IUserManager.cs rename OwnChar/{ => Client}/Managers/UserManager.cs (66%) rename OwnChar/{ => Client}/OwnCharManager.cs (91%) rename OwnChar/{Api => Client}/OwnCharManagerModule.cs (69%) delete mode 100644 OwnChar/Clients/CharactersApiClient.cs delete mode 100644 OwnChar/Clients/GroupsApiClient.cs delete mode 100644 OwnChar/Clients/LoginApiClient.cs delete mode 100644 OwnChar/Clients/UsersApiClient.cs delete mode 100644 OwnChar/Model/PropertyCategory.cs delete mode 100644 OwnChar/Model/UserProfile.cs rename OwnChar/{ => Server}/Data/DatabaseContext.cs (100%) create mode 100644 OwnChar/Server/Data/Model/CharacterDb.cs create mode 100644 OwnChar/Server/Data/Model/GroupDb.cs create mode 100644 OwnChar/Server/Data/Model/MemberEntryDb.cs create mode 100644 OwnChar/Server/Data/Model/PropertyCategoryDb.cs create mode 100644 OwnChar/Server/Data/Model/PropertyDb.cs create mode 100644 OwnChar/Server/Data/Model/UserAccountDb.cs create mode 100644 OwnChar/Server/Data/Model/UserProfileDb.cs diff --git a/OwnChar/Api/Managers/ICharacterManager.cs b/OwnChar/Api/Managers/ICharacterManager.cs deleted file mode 100644 index 6f5106b..0000000 --- a/OwnChar/Api/Managers/ICharacterManager.cs +++ /dev/null @@ -1,12 +0,0 @@ -using OwnChar.Model; - -namespace OwnChar.Api.Managers; -public interface ICharacterManager -{ - Character? CreateCharacter(string? name); - Character? CreateCharacter(string? name, Group? destination); - bool DeleteCharacter(Character? character); - IQueryable? GetCharacters(Group? group); - IQueryable? GetCharacters(UserProfile? profile); - UserProfile? GetOwner(Character? character); -} \ No newline at end of file diff --git a/OwnChar/Api/Managers/IGroupsManager.cs b/OwnChar/Api/Managers/IGroupsManager.cs deleted file mode 100644 index 534830a..0000000 --- a/OwnChar/Api/Managers/IGroupsManager.cs +++ /dev/null @@ -1,14 +0,0 @@ -using OwnChar.Model; - -namespace OwnChar.Api.Managers; -public interface IGroupsManager -{ - IQueryable? GetGroups(UserProfile? profile); - IQueryable? GetGroups(); - bool AddMember(UserProfile? profile, Group? group); - Group? CreateGroup(string? name); - bool DeleteGroup(Group? group); - bool RemoveMember(UserProfile? profile, Group? group); - IQueryable? GetMembers(Group? group); - UserProfile? GetOwner(Group? group); -} \ No newline at end of file diff --git a/OwnChar/Api/Managers/IUserManager.cs b/OwnChar/Api/Managers/IUserManager.cs deleted file mode 100644 index f56c369..0000000 --- a/OwnChar/Api/Managers/IUserManager.cs +++ /dev/null @@ -1,12 +0,0 @@ -using OwnChar.Model; -using Pilz.Cryptography; - -namespace OwnChar.Api.Managers; - -public interface IUserManager -{ - IQueryable? GetUserAccounts(); - UserAccount? CreateUserAccount(string? username, SecureString? password); - bool DeleteUserAccount(UserAccount? account); - UserProfile? GetOwnUserProfile(); -} \ No newline at end of file diff --git a/OwnChar/Api/Responses/LoginResponse.cs b/OwnChar/Api/Responses/LoginResponse.cs deleted file mode 100644 index 4d37195..0000000 --- a/OwnChar/Api/Responses/LoginResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -using OwnChar.Model; - -namespace OwnChar.Api.Responses; - -public class LoginResponse -{ - public UserAccount? UserAccount { get; set; } - public string? Secret { get; set; } -} diff --git a/OwnChar/Api/Updates/GroupUpdate.cs b/OwnChar/Api/Updates/GroupUpdate.cs deleted file mode 100644 index d09bb57..0000000 --- a/OwnChar/Api/Updates/GroupUpdate.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace OwnChar.Api.Updates; - -public class GroupUpdate -{ - public int Id { get; set; } - public string? Name { get; set; } -} diff --git a/OwnChar/Base/Data/MemberLevel.cs b/OwnChar/Base/Data/MemberLevel.cs new file mode 100644 index 0000000..2fa7efe --- /dev/null +++ b/OwnChar/Base/Data/MemberLevel.cs @@ -0,0 +1,10 @@ +namespace OwnChar.Base.Data; + +public enum MemberLevel +{ + None, + Guest, + Member, + Admin, + Owner, +} diff --git a/OwnChar/Model/Character.cs b/OwnChar/Base/Data/Model/CharacterBase.cs similarity index 52% rename from OwnChar/Model/Character.cs rename to OwnChar/Base/Data/Model/CharacterBase.cs index de937a9..970b72c 100644 --- a/OwnChar/Model/Character.cs +++ b/OwnChar/Base/Data/Model/CharacterBase.cs @@ -1,6 +1,6 @@ -namespace OwnChar.Model; +namespace OwnChar.Base.Data.Model; -public abstract class Character : OwnCharObject +public abstract class CharacterBase : OwnCharObject { public virtual string? Name { get; set; } public virtual string? Fandom { get; set; } diff --git a/OwnChar/Model/Group.cs b/OwnChar/Base/Data/Model/GroupBase.cs similarity index 63% rename from OwnChar/Model/Group.cs rename to OwnChar/Base/Data/Model/GroupBase.cs index 1cfa775..dc8c9a0 100644 --- a/OwnChar/Model/Group.cs +++ b/OwnChar/Base/Data/Model/GroupBase.cs @@ -1,6 +1,6 @@ -namespace OwnChar.Model; +namespace OwnChar.Base.Data.Model; -public abstract class Group : OwnCharObject +public abstract class GroupBase : OwnCharObject { public virtual string? Name { get; set; } public virtual string? Fandom { get; set; } diff --git a/OwnChar/Base/Data/Model/MemberEntryBase.cs b/OwnChar/Base/Data/Model/MemberEntryBase.cs new file mode 100644 index 0000000..b27c620 --- /dev/null +++ b/OwnChar/Base/Data/Model/MemberEntryBase.cs @@ -0,0 +1,8 @@ +using OwnChar.Client.Data.Model; + +namespace OwnChar.Base.Data.Model; + +public abstract class MemberEntryBase : OwnCharObject +{ + public virtual MemberLevel Level { get; set; } +} diff --git a/OwnChar/Model/Property.cs b/OwnChar/Base/Data/Model/PropertyBase.cs similarity index 52% rename from OwnChar/Model/Property.cs rename to OwnChar/Base/Data/Model/PropertyBase.cs index 5dd73bc..0afead2 100644 --- a/OwnChar/Model/Property.cs +++ b/OwnChar/Base/Data/Model/PropertyBase.cs @@ -1,6 +1,6 @@ -namespace OwnChar.Model; +namespace OwnChar.Base.Data.Model; -public abstract class Property : OwnCharObject +public abstract class PropertyBase : OwnCharObject { public virtual string? Name { get; set; } public virtual object? Value { get; set; } diff --git a/OwnChar/Base/Data/Model/PropertyCategoryBase.cs b/OwnChar/Base/Data/Model/PropertyCategoryBase.cs new file mode 100644 index 0000000..6794fe2 --- /dev/null +++ b/OwnChar/Base/Data/Model/PropertyCategoryBase.cs @@ -0,0 +1,6 @@ +namespace OwnChar.Base.Data.Model; + +public abstract class PropertyCategoryBase : OwnCharObject +{ + public virtual string? Name { get; set; } +} diff --git a/OwnChar/Model/UserAccount.cs b/OwnChar/Base/Data/Model/UserAccountBase.cs similarity index 53% rename from OwnChar/Model/UserAccount.cs rename to OwnChar/Base/Data/Model/UserAccountBase.cs index 541547f..a243568 100644 --- a/OwnChar/Model/UserAccount.cs +++ b/OwnChar/Base/Data/Model/UserAccountBase.cs @@ -1,9 +1,8 @@ -namespace OwnChar.Model; +namespace OwnChar.Base.Data.Model; -public abstract class UserAccount : OwnCharObject +public abstract class UserAccountBase : OwnCharObject { public virtual string? Username { get; set; } - public virtual string? Password { get; set; } public virtual string? Email { get; set; } public virtual UserType Type { get; set; } } diff --git a/OwnChar/Base/Data/Model/UserProfileBase.cs b/OwnChar/Base/Data/Model/UserProfileBase.cs new file mode 100644 index 0000000..094ce4a --- /dev/null +++ b/OwnChar/Base/Data/Model/UserProfileBase.cs @@ -0,0 +1,6 @@ +namespace OwnChar.Base.Data.Model; + +public abstract class UserProfileBase : OwnCharObject +{ + public virtual string? Name { get; set; } +} diff --git a/OwnChar/Model/OwnCharObject.cs b/OwnChar/Base/Data/OwnCharObject.cs similarity index 69% rename from OwnChar/Model/OwnCharObject.cs rename to OwnChar/Base/Data/OwnCharObject.cs index 90e3e0b..b533557 100644 --- a/OwnChar/Model/OwnCharObject.cs +++ b/OwnChar/Base/Data/OwnCharObject.cs @@ -1,4 +1,4 @@ -namespace OwnChar.Model; +namespace OwnChar.Base.Data; public class OwnCharObject { diff --git a/OwnChar/Base/Data/Requests/GroupMemberAddRequest.cs b/OwnChar/Base/Data/Requests/GroupMemberAddRequest.cs new file mode 100644 index 0000000..adfa381 --- /dev/null +++ b/OwnChar/Base/Data/Requests/GroupMemberAddRequest.cs @@ -0,0 +1,8 @@ +using OwnChar.Client.Data.Model; + +namespace OwnChar.Base.Data.Requests; + +public class GroupMemberAddRequest +{ + public Dictionary Members { get; } = []; +} diff --git a/OwnChar/Base/Data/Requests/GroupMemberRemoveRequest.cs b/OwnChar/Base/Data/Requests/GroupMemberRemoveRequest.cs new file mode 100644 index 0000000..17ee2f5 --- /dev/null +++ b/OwnChar/Base/Data/Requests/GroupMemberRemoveRequest.cs @@ -0,0 +1,8 @@ +using OwnChar.Client.Data.Model; + +namespace OwnChar.Base.Data.Requests; + +public class GroupMemberRemoveRequest +{ + public List Members { get; } = []; +} diff --git a/OwnChar/Base/Data/Requests/LoginRequest.cs b/OwnChar/Base/Data/Requests/LoginRequest.cs new file mode 100644 index 0000000..d3b146d --- /dev/null +++ b/OwnChar/Base/Data/Requests/LoginRequest.cs @@ -0,0 +1,9 @@ +using Pilz.Cryptography; + +namespace OwnChar.Base.Data.Requests; + +public class LoginRequest(string username, SecureString password) +{ + public string Username { get; } = username; + public SecureString Password { get; } = password; +} diff --git a/OwnChar/Base/Data/Requests/LogoutRequest.cs b/OwnChar/Base/Data/Requests/LogoutRequest.cs new file mode 100644 index 0000000..52d9c4d --- /dev/null +++ b/OwnChar/Base/Data/Requests/LogoutRequest.cs @@ -0,0 +1,5 @@ +namespace OwnChar.Base.Data.Requests; + +public class LogoutRequest +{ +} diff --git a/OwnChar/Base/Data/Requests/UpdateRequest.cs b/OwnChar/Base/Data/Requests/UpdateRequest.cs new file mode 100644 index 0000000..bc0f086 --- /dev/null +++ b/OwnChar/Base/Data/Requests/UpdateRequest.cs @@ -0,0 +1,8 @@ +using OwnChar.Base.Data.Updates; + +namespace OwnChar.Base.Data.Requests; + +public class UpdateRequest(OwnCharObjectUpdate update) +{ + public OwnCharObjectUpdate Update { get; } = update; +} diff --git a/OwnChar/Base/Data/Responses/LoginResponse.cs b/OwnChar/Base/Data/Responses/LoginResponse.cs new file mode 100644 index 0000000..f24cc6d --- /dev/null +++ b/OwnChar/Base/Data/Responses/LoginResponse.cs @@ -0,0 +1,10 @@ +using OwnChar.Client.Data.Model; + +namespace OwnChar.Base.Data.Responses; + +public class LoginResponse(UserAccount account, UserProfile profile, string secret) +{ + public UserAccount Account { get; } = account; + public UserProfile Profile { get; } = profile; + public string? Secret { get; } = secret; +} diff --git a/OwnChar/Base/Data/Updates/GroupUpdate.cs b/OwnChar/Base/Data/Updates/GroupUpdate.cs new file mode 100644 index 0000000..b496129 --- /dev/null +++ b/OwnChar/Base/Data/Updates/GroupUpdate.cs @@ -0,0 +1,19 @@ +using OwnChar.Client.Data.Model; + +namespace OwnChar.Base.Data.Updates; + +public class GroupUpdate : OwnCharObjectUpdate +{ + public string? Name { get; set; } + public string? Fandom { get; set; } + + public GroupUpdate() : base() + { + } + + public GroupUpdate(Group group) : base(group) + { + Name = group.Name; + Fandom = group.Fandom; + } +} diff --git a/OwnChar/Base/Data/Updates/OwnCharObjectUpdate.cs b/OwnChar/Base/Data/Updates/OwnCharObjectUpdate.cs new file mode 100644 index 0000000..36c211e --- /dev/null +++ b/OwnChar/Base/Data/Updates/OwnCharObjectUpdate.cs @@ -0,0 +1,15 @@ +namespace OwnChar.Base.Data.Updates; + +public abstract class OwnCharObjectUpdate +{ + public long Id { get; set; } + + public OwnCharObjectUpdate() + { + } + + public OwnCharObjectUpdate(OwnCharObject obj) : this() + { + Id = obj.Id; + } +} diff --git a/OwnChar/Model/UserType.cs b/OwnChar/Base/Data/UserType.cs similarity index 67% rename from OwnChar/Model/UserType.cs rename to OwnChar/Base/Data/UserType.cs index 355eecd..c9671d0 100644 --- a/OwnChar/Model/UserType.cs +++ b/OwnChar/Base/Data/UserType.cs @@ -1,4 +1,4 @@ -namespace OwnChar.Model; +namespace OwnChar.Base.Data; public enum UserType { diff --git a/OwnChar/Client/Data/Clients/CharactersApiClient.cs b/OwnChar/Client/Data/Clients/CharactersApiClient.cs new file mode 100644 index 0000000..3b423e7 --- /dev/null +++ b/OwnChar/Client/Data/Clients/CharactersApiClient.cs @@ -0,0 +1,5 @@ +namespace OwnChar.Client.Data.Clients; + +public class CharactersApiClient +{ +} diff --git a/OwnChar/Client/Data/Clients/GroupsApiClient.cs b/OwnChar/Client/Data/Clients/GroupsApiClient.cs new file mode 100644 index 0000000..355d903 --- /dev/null +++ b/OwnChar/Client/Data/Clients/GroupsApiClient.cs @@ -0,0 +1,5 @@ +namespace OwnChar.Client.Data.Clients; + +public class GroupsApiClient +{ +} diff --git a/OwnChar/Client/Data/Clients/LoginApiClient.cs b/OwnChar/Client/Data/Clients/LoginApiClient.cs new file mode 100644 index 0000000..9fbdfe0 --- /dev/null +++ b/OwnChar/Client/Data/Clients/LoginApiClient.cs @@ -0,0 +1,14 @@ +namespace OwnChar.Client.Data.Clients; + +public class LoginApiClient +{ + public string Login(string username, string password) + { + + } + + public string Logout() + { + + } +} diff --git a/OwnChar/Client/Data/Clients/UsersApiClient.cs b/OwnChar/Client/Data/Clients/UsersApiClient.cs new file mode 100644 index 0000000..0417f50 --- /dev/null +++ b/OwnChar/Client/Data/Clients/UsersApiClient.cs @@ -0,0 +1,5 @@ +namespace OwnChar.Client.Data.Clients; + +public class UsersApiClient +{ +} diff --git a/OwnChar/Client/Data/Model/Character.cs b/OwnChar/Client/Data/Model/Character.cs new file mode 100644 index 0000000..719a418 --- /dev/null +++ b/OwnChar/Client/Data/Model/Character.cs @@ -0,0 +1,13 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class Character() : CharacterBase +{ + internal Character(CharacterBase character) : this() + { + Id = character.Id; + Name = character.Name; + Fandom = character.Fandom; + } +} diff --git a/OwnChar/Client/Data/Model/Group.cs b/OwnChar/Client/Data/Model/Group.cs new file mode 100644 index 0000000..70894cc --- /dev/null +++ b/OwnChar/Client/Data/Model/Group.cs @@ -0,0 +1,14 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class Group() : GroupBase +{ + internal Group(GroupBase group) : this() + { + Id = group.Id; + Name = group.Name; + IsInternal = group.IsInternal; + Fandom = group.Fandom; + } +} diff --git a/OwnChar/Client/Data/Model/MemberEntry.cs b/OwnChar/Client/Data/Model/MemberEntry.cs new file mode 100644 index 0000000..49e4f9e --- /dev/null +++ b/OwnChar/Client/Data/Model/MemberEntry.cs @@ -0,0 +1,13 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class MemberEntry() : MemberEntryBase +{ + internal MemberEntry(MemberEntryBase entry) : this() + { + Id = entry.Id; + User = entry.User; + Level = entry.Level; + } +} diff --git a/OwnChar/Client/Data/Model/Property.cs b/OwnChar/Client/Data/Model/Property.cs new file mode 100644 index 0000000..f44b7ff --- /dev/null +++ b/OwnChar/Client/Data/Model/Property.cs @@ -0,0 +1,13 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class Property() : PropertyBase +{ + internal Property(PropertyBase prop) : this() + { + Id = prop.Id; + Name = prop.Name; + Value = prop.Value; + } +} diff --git a/OwnChar/Client/Data/Model/PropertyCategory.cs b/OwnChar/Client/Data/Model/PropertyCategory.cs new file mode 100644 index 0000000..3177ad1 --- /dev/null +++ b/OwnChar/Client/Data/Model/PropertyCategory.cs @@ -0,0 +1,12 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class PropertyCategory() : PropertyCategoryBase +{ + internal PropertyCategory(PropertyCategoryBase propCat) : this() + { + Id = propCat.Id; + Name = propCat.Name; + } +} diff --git a/OwnChar/Client/Data/Model/UserAccount.cs b/OwnChar/Client/Data/Model/UserAccount.cs new file mode 100644 index 0000000..e0000ce --- /dev/null +++ b/OwnChar/Client/Data/Model/UserAccount.cs @@ -0,0 +1,14 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class UserAccount() : UserAccountBase +{ + internal UserAccount(UserAccountBase account) : this() + { + Id = account.Id; + Username = account.Username; + Email = account.Email; + Type = account.Type; + } +} diff --git a/OwnChar/Client/Data/Model/UserProfile.cs b/OwnChar/Client/Data/Model/UserProfile.cs new file mode 100644 index 0000000..edb140f --- /dev/null +++ b/OwnChar/Client/Data/Model/UserProfile.cs @@ -0,0 +1,12 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Client.Data.Model; + +public class UserProfile() : UserProfileBase +{ + internal UserProfile(UserProfileBase profile) : this() + { + Id = profile.Id; + Name = profile.Name; + } +} diff --git a/OwnChar/OwnCharApiClient.cs b/OwnChar/Client/Data/OwnCharApiClient.cs similarity index 71% rename from OwnChar/OwnCharApiClient.cs rename to OwnChar/Client/Data/OwnCharApiClient.cs index b6b12eb..eba1856 100644 --- a/OwnChar/OwnCharApiClient.cs +++ b/OwnChar/Client/Data/OwnCharApiClient.cs @@ -1,4 +1,4 @@ -namespace OwnChar; +namespace OwnChar.Client.Data; public class OwnCharApiClient { diff --git a/OwnChar/Api/Managers/IOwnCharManager.cs b/OwnChar/Client/IOwnCharManager.cs similarity index 62% rename from OwnChar/Api/Managers/IOwnCharManager.cs rename to OwnChar/Client/IOwnCharManager.cs index bded632..3fa9c17 100644 --- a/OwnChar/Api/Managers/IOwnCharManager.cs +++ b/OwnChar/Client/IOwnCharManager.cs @@ -1,12 +1,14 @@ -using OwnChar.Data; +using OwnChar.Client.Managers; +using OwnChar.Data; using OwnChar.Model; using Pilz.Cryptography; -namespace OwnChar.Api.Managers; +namespace OwnChar.Client; + public interface IOwnCharManager { IDataManager? DataManager { get; set; } - UserAccount? CurrentUser { get; } + UserAccountBase? CurrentUser { get; } bool IsLoggedIn { get; } IUserManager Users { get; } @@ -15,4 +17,9 @@ public interface IOwnCharManager bool Login(IDataManager? proxy, string? username, SecureString? password); bool Logout(); + + public static IOwnCharManager CreateDefault() + { + return new OwnCharManager(); + } } \ No newline at end of file diff --git a/OwnChar/Managers/CharacterManager.cs b/OwnChar/Client/Managers/CharacterManager.cs similarity index 61% rename from OwnChar/Managers/CharacterManager.cs rename to OwnChar/Client/Managers/CharacterManager.cs index 9ad1da6..f087ae0 100644 --- a/OwnChar/Managers/CharacterManager.cs +++ b/OwnChar/Client/Managers/CharacterManager.cs @@ -1,55 +1,53 @@ -using OwnChar.Api; -using OwnChar.Api.Managers; -using OwnChar.Data; +using OwnChar.Data; using OwnChar.Model; -namespace OwnChar.Managers; +namespace OwnChar.Client.Managers; -public class CharacterManager(OwnCharManager manager) : OwnCharManagerModule(manager), ICharacterManager +internal class CharacterManager(OwnCharManager manager) : OwnCharManagerModule(manager), ICharacterManager { - public IQueryable? GetCharacters(Group? group) + public IQueryable? GetCharacters(GroupBase? group) { Manager.CheckLogin(); if (group != null) - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Character, DataManagerActionType.Get, Manager.CurrentUser, group).Result as IQueryable; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Character, DataManagerActionType.Get, Manager.CurrentUser, group).Result as IQueryable; return null; } - public IQueryable? GetCharacters(UserProfile? profile) + public IQueryable? GetCharacters(UserProfileBase? profile) { Manager.CheckLogin(); if (profile != null) - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Character, DataManagerActionType.Get, Manager.CurrentUser, profile).Result as IQueryable; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Character, DataManagerActionType.Get, Manager.CurrentUser, profile).Result as IQueryable; return null; } - public Character? CreateCharacter(string? name) + public CharacterBase? CreateCharacter(string? name) { return CreateCharacter(name, null); } - public Character? CreateCharacter(string? name, Group? destination) + public CharacterBase? CreateCharacter(string? name, GroupBase? destination) { ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name)); Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.PropertyCategory, DataManagerActionType.Set, Manager.CurrentUser, null, name, destination).Result as Character; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.PropertyCategory, DataManagerActionType.Set, Manager.CurrentUser, null, name, destination).Result as CharacterBase; } - public bool DeleteCharacter(Character? character) + public bool DeleteCharacter(CharacterBase? character) { ArgumentNullException.ThrowIfNull(character, nameof(character)); Manager.CheckLogin(); return Manager.DataManager.ExecuteAction(DataManagerActions.Delete, DataManagerActionType.Default, Manager.CurrentUser, character).HasSuccess; } - public UserProfile? GetOwner(Character? character) + public UserProfileBase? GetOwner(CharacterBase? character) { ArgumentNullException.ThrowIfNull(character, nameof(character)); Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Owner, DataManagerActionType.Get, Manager.CurrentUser, character).Result as UserProfile; + return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Owner, DataManagerActionType.Get, Manager.CurrentUser, character).Result as UserProfileBase; } } diff --git a/OwnChar/Managers/GroupsManager.cs b/OwnChar/Client/Managers/GroupsManager.cs similarity index 71% rename from OwnChar/Managers/GroupsManager.cs rename to OwnChar/Client/Managers/GroupsManager.cs index 14c2be7..8d99443 100644 --- a/OwnChar/Managers/GroupsManager.cs +++ b/OwnChar/Client/Managers/GroupsManager.cs @@ -1,40 +1,38 @@ -using OwnChar.Api; -using OwnChar.Api.Managers; -using OwnChar.Data; +using OwnChar.Data; using OwnChar.Model; -namespace OwnChar.Managers; +namespace OwnChar.Client.Managers; -public class GroupsManager(OwnCharManager manager) : OwnCharManagerModule(manager), IGroupsManager +internal class GroupsManager(OwnCharManager manager) : OwnCharManagerModule(manager), IGroupsManager { - public UserProfile? GetOwner(Group? group) + public UserProfileBase? GetOwner(GroupBase? group) { ArgumentNullException.ThrowIfNull(group, nameof(group)); Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Owner, DataManagerActionType.Get, Manager.CurrentUser, group).Result as UserProfile; + return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Owner, DataManagerActionType.Get, Manager.CurrentUser, group).Result as UserProfileBase; } - public IQueryable? GetGroups(UserProfile? profile) + public IQueryable? GetGroups(UserProfileBase? profile) { ArgumentNullException.ThrowIfNull(profile, nameof(profile)); Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Get, Manager.CurrentUser, profile) as IQueryable; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Get, Manager.CurrentUser, profile) as IQueryable; } - public IQueryable? GetGroups() + public IQueryable? GetGroups() { Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Get, Manager.CurrentUser, null) as IQueryable; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Get, Manager.CurrentUser, null) as IQueryable; } - public IQueryable? GetMembers(Group? group) + public IQueryable? GetMembers(GroupBase? group) { ArgumentNullException.ThrowIfNull(group, nameof(group)); Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Get, Manager.CurrentUser, group).Result as IQueryable; + return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Get, Manager.CurrentUser, group).Result as IQueryable; } - public bool AddMember(UserProfile? profile, Group? group) + public bool AddMember(UserProfileBase? profile, GroupBase? group) { ArgumentNullException.ThrowIfNull(profile, nameof(profile)); ArgumentNullException.ThrowIfNull(group, nameof(group)); @@ -42,7 +40,7 @@ public class GroupsManager(OwnCharManager manager) : OwnCharManagerModule(manage return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Set, Manager.CurrentUser, group, profile).HasSuccess; } - public bool RemoveMember(UserProfile? profile, Group? group) + public bool RemoveMember(UserProfileBase? profile, GroupBase? group) { ArgumentNullException.ThrowIfNull(profile, nameof(profile)); ArgumentNullException.ThrowIfNull(group, nameof(group)); @@ -50,14 +48,14 @@ public class GroupsManager(OwnCharManager manager) : OwnCharManagerModule(manage return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Members, DataManagerActionType.Delete, Manager.CurrentUser, group, profile).HasSuccess; } - public Group? CreateGroup(string? name) + public GroupBase? CreateGroup(string? name) { ArgumentException.ThrowIfNullOrWhiteSpace(name, nameof(name)); Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Set, Manager.CurrentUser, null, name).Result as Group; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.Group, DataManagerActionType.Set, Manager.CurrentUser, null, name).Result as GroupBase; } - public bool DeleteGroup(Group? group) + public bool DeleteGroup(GroupBase? group) { ArgumentNullException.ThrowIfNull(group, nameof(group)); Manager.CheckLogin(); diff --git a/OwnChar/Client/Managers/ICharacterManager.cs b/OwnChar/Client/Managers/ICharacterManager.cs new file mode 100644 index 0000000..5391527 --- /dev/null +++ b/OwnChar/Client/Managers/ICharacterManager.cs @@ -0,0 +1,12 @@ +using OwnChar.Model; + +namespace OwnChar.Client.Managers; +public interface ICharacterManager +{ + CharacterBase? CreateCharacter(string? name); + CharacterBase? CreateCharacter(string? name, GroupBase? destination); + bool DeleteCharacter(CharacterBase? character); + IQueryable? GetCharacters(GroupBase? group); + IQueryable? GetCharacters(UserProfileBase? profile); + UserProfileBase? GetOwner(CharacterBase? character); +} \ No newline at end of file diff --git a/OwnChar/Client/Managers/IGroupsManager.cs b/OwnChar/Client/Managers/IGroupsManager.cs new file mode 100644 index 0000000..5843eb6 --- /dev/null +++ b/OwnChar/Client/Managers/IGroupsManager.cs @@ -0,0 +1,14 @@ +using OwnChar.Model; + +namespace OwnChar.Client.Managers; +public interface IGroupsManager +{ + IQueryable? GetGroups(UserProfileBase? profile); + IQueryable? GetGroups(); + bool AddMember(UserProfileBase? profile, GroupBase? group); + GroupBase? CreateGroup(string? name); + bool DeleteGroup(GroupBase? group); + bool RemoveMember(UserProfileBase? profile, GroupBase? group); + IQueryable? GetMembers(GroupBase? group); + UserProfileBase? GetOwner(GroupBase? group); +} \ No newline at end of file diff --git a/OwnChar/Client/Managers/IUserManager.cs b/OwnChar/Client/Managers/IUserManager.cs new file mode 100644 index 0000000..7887f79 --- /dev/null +++ b/OwnChar/Client/Managers/IUserManager.cs @@ -0,0 +1,12 @@ +using OwnChar.Model; +using Pilz.Cryptography; + +namespace OwnChar.Client.Managers; + +public interface IUserManager +{ + IQueryable? GetUserAccounts(); + UserAccountBase? CreateUserAccount(string? username, SecureString? password); + bool DeleteUserAccount(UserAccountBase? account); + UserProfileBase? GetOwnUserProfile(); +} \ No newline at end of file diff --git a/OwnChar/Managers/UserManager.cs b/OwnChar/Client/Managers/UserManager.cs similarity index 66% rename from OwnChar/Managers/UserManager.cs rename to OwnChar/Client/Managers/UserManager.cs index 9454e62..ee46046 100644 --- a/OwnChar/Managers/UserManager.cs +++ b/OwnChar/Client/Managers/UserManager.cs @@ -1,35 +1,33 @@ -using OwnChar.Api; -using OwnChar.Api.Managers; -using OwnChar.Data; +using OwnChar.Data; using OwnChar.Model; using Pilz.Cryptography; -namespace OwnChar.Managers; +namespace OwnChar.Client.Managers; -public class UserManager(OwnCharManager manager) : OwnCharManagerModule(manager), IUserManager +internal class UserManager(OwnCharManager manager) : OwnCharManagerModule(manager), IUserManager { - public UserProfile? GetOwnUserProfile() + public UserProfileBase? GetOwnUserProfile() { Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Profile, DataManagerActionType.Get, Manager.CurrentUser, Manager.CurrentUser).Result as UserProfile; + return Manager.DataManager.ExecuteAction(DataManagerActions.Association.Profile, DataManagerActionType.Get, Manager.CurrentUser, Manager.CurrentUser).Result as UserProfileBase; } - public IQueryable? GetUserAccounts() + public IQueryable? GetUserAccounts() { Manager.CheckLogin(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.UserAccount, DataManagerActionType.Get, Manager.CurrentUser, null).Result as IQueryable; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.UserAccount, DataManagerActionType.Get, Manager.CurrentUser, null).Result as IQueryable; } - public UserAccount? CreateUserAccount(string? username, SecureString? password) + public UserAccountBase? CreateUserAccount(string? username, SecureString? password) { ArgumentException.ThrowIfNullOrWhiteSpace(username, nameof(username)); ArgumentException.ThrowIfNullOrWhiteSpace(password, nameof(password)); Manager.CheckLogin(); username = username.Trim().ToLower(); - return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.UserAccount, DataManagerActionType.Set, Manager.CurrentUser, null, username, OwnCharUtils.HashPassword(username, password)).Result as UserAccount; + return Manager.DataManager.ExecuteAction(DataManagerActions.Getter.UserAccount, DataManagerActionType.Set, Manager.CurrentUser, null, username, OwnCharUtils.HashPassword(username, password)).Result as UserAccountBase; } - public bool DeleteUserAccount(UserAccount? account) + public bool DeleteUserAccount(UserAccountBase? account) { ArgumentNullException.ThrowIfNull(account, nameof(account)); Manager.CheckLogin(); diff --git a/OwnChar/OwnCharManager.cs b/OwnChar/Client/OwnCharManager.cs similarity index 91% rename from OwnChar/OwnCharManager.cs rename to OwnChar/Client/OwnCharManager.cs index 2c3298b..a84d08b 100644 --- a/OwnChar/OwnCharManager.cs +++ b/OwnChar/Client/OwnCharManager.cs @@ -1,18 +1,18 @@ using OwnChar.Api.Exceptions; -using OwnChar.Api.Managers; +using OwnChar.Client.Managers; using OwnChar.Data; using OwnChar.Manager.Modules; using OwnChar.Model; using Pilz.Cryptography; using System.Diagnostics.CodeAnalysis; -namespace OwnChar; +namespace OwnChar.Client; -public class OwnCharManager : IOwnCharManager +internal class OwnCharManager : IOwnCharManager { // User public bool IsLoggedIn => CurrentUser != null; - public UserAccount? CurrentUser { get; private set; } + public UserAccountBase? CurrentUser { get; private set; } // Data Provider public IDataManager? DataManager { get; set; } diff --git a/OwnChar/Api/OwnCharManagerModule.cs b/OwnChar/Client/OwnCharManagerModule.cs similarity index 69% rename from OwnChar/Api/OwnCharManagerModule.cs rename to OwnChar/Client/OwnCharManagerModule.cs index db5ea0c..6e551e5 100644 --- a/OwnChar/Api/OwnCharManagerModule.cs +++ b/OwnChar/Client/OwnCharManagerModule.cs @@ -1,6 +1,4 @@ -using OwnChar.Api.Managers; - -namespace OwnChar.Api; +namespace OwnChar.Client; public abstract class OwnCharManagerModule(IOwnCharManager manager) { diff --git a/OwnChar/Clients/CharactersApiClient.cs b/OwnChar/Clients/CharactersApiClient.cs deleted file mode 100644 index ba6d434..0000000 --- a/OwnChar/Clients/CharactersApiClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace OwnChar.Clients; - -public class CharactersApiClient -{ -} diff --git a/OwnChar/Clients/GroupsApiClient.cs b/OwnChar/Clients/GroupsApiClient.cs deleted file mode 100644 index 4447576..0000000 --- a/OwnChar/Clients/GroupsApiClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace OwnChar.Clients; - -public class GroupsApiClient -{ -} diff --git a/OwnChar/Clients/LoginApiClient.cs b/OwnChar/Clients/LoginApiClient.cs deleted file mode 100644 index 1620487..0000000 --- a/OwnChar/Clients/LoginApiClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace OwnChar.Clients; - -public class LoginApiClient -{ -} diff --git a/OwnChar/Clients/UsersApiClient.cs b/OwnChar/Clients/UsersApiClient.cs deleted file mode 100644 index d1a3d22..0000000 --- a/OwnChar/Clients/UsersApiClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace OwnChar.Clients; - -public class UsersApiClient -{ -} diff --git a/OwnChar/Model/PropertyCategory.cs b/OwnChar/Model/PropertyCategory.cs deleted file mode 100644 index 6f59169..0000000 --- a/OwnChar/Model/PropertyCategory.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace OwnChar.Model; - -public abstract class PropertyCategory : OwnCharObject -{ - public virtual string? Name { get; set; } -} diff --git a/OwnChar/Model/UserProfile.cs b/OwnChar/Model/UserProfile.cs deleted file mode 100644 index 6457a3b..0000000 --- a/OwnChar/Model/UserProfile.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace OwnChar.Model; - -public abstract class UserProfile : OwnCharObject -{ - public virtual string? Name { get; set; } -} diff --git a/OwnChar/OwnChar.csproj b/OwnChar/OwnChar.csproj index 0dccef4..d240d82 100644 --- a/OwnChar/OwnChar.csproj +++ b/OwnChar/OwnChar.csproj @@ -14,8 +14,4 @@ - - - - diff --git a/OwnChar/OwnCharExtensions.cs b/OwnChar/OwnCharExtensions.cs index b5042f5..ba91a69 100644 --- a/OwnChar/OwnCharExtensions.cs +++ b/OwnChar/OwnCharExtensions.cs @@ -1,4 +1,5 @@ -using OwnChar.Data; +using OwnChar.Base.Data; +using OwnChar.Data; using OwnChar.Model; using System.Diagnostics.CodeAnalysis; @@ -17,7 +18,7 @@ public static class OwnCharExtensions return false; } - public static bool HasPermission(this UserAccount account, UserType permissions) + public static bool HasPermission(this UserAccountBase account, UserType permissions) { return account.Type >= permissions; } diff --git a/OwnChar/Data/DatabaseContext.cs b/OwnChar/Server/Data/DatabaseContext.cs similarity index 100% rename from OwnChar/Data/DatabaseContext.cs rename to OwnChar/Server/Data/DatabaseContext.cs diff --git a/OwnChar/Server/Data/Model/CharacterDb.cs b/OwnChar/Server/Data/Model/CharacterDb.cs new file mode 100644 index 0000000..7eb60e2 --- /dev/null +++ b/OwnChar/Server/Data/Model/CharacterDb.cs @@ -0,0 +1,11 @@ +using OwnChar.Base.Data.Model; +using OwnChar.Client.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class CharacterDb : CharacterBase +{ + public UserProfileDb? Owner { get; set; } + public List PropCats { get; } = []; + public List Props { get; } = []; +} diff --git a/OwnChar/Server/Data/Model/GroupDb.cs b/OwnChar/Server/Data/Model/GroupDb.cs new file mode 100644 index 0000000..169e5e3 --- /dev/null +++ b/OwnChar/Server/Data/Model/GroupDb.cs @@ -0,0 +1,16 @@ +using OwnChar.Base.Data.Updates; +using OwnChar.Base.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class GroupDb : GroupBase +{ + public List Characters { get; } = []; + public List Members { get; } = []; + + public void Update(GroupUpdate update) + { + Name = update.Name; + Fandom = update.Fandom; + } +} diff --git a/OwnChar/Server/Data/Model/MemberEntryDb.cs b/OwnChar/Server/Data/Model/MemberEntryDb.cs new file mode 100644 index 0000000..2355545 --- /dev/null +++ b/OwnChar/Server/Data/Model/MemberEntryDb.cs @@ -0,0 +1,15 @@ +using OwnChar.Base.Data.Model; +using OwnChar.Client.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class MemberEntryDb() : MemberEntryBase +{ + public virtual UserProfile? User { get; set; } + + internal MemberEntryDb(MemberEntryBase entry) : this() + { + Id = entry.Id; + Level = entry.Level; + } +} diff --git a/OwnChar/Server/Data/Model/PropertyCategoryDb.cs b/OwnChar/Server/Data/Model/PropertyCategoryDb.cs new file mode 100644 index 0000000..89569fb --- /dev/null +++ b/OwnChar/Server/Data/Model/PropertyCategoryDb.cs @@ -0,0 +1,7 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class PropertyCategoryDb : PropertyCategoryBase +{ +} diff --git a/OwnChar/Server/Data/Model/PropertyDb.cs b/OwnChar/Server/Data/Model/PropertyDb.cs new file mode 100644 index 0000000..6f5cbaa --- /dev/null +++ b/OwnChar/Server/Data/Model/PropertyDb.cs @@ -0,0 +1,7 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class PropertyDb : PropertyBase +{ +} diff --git a/OwnChar/Server/Data/Model/UserAccountDb.cs b/OwnChar/Server/Data/Model/UserAccountDb.cs new file mode 100644 index 0000000..1428ad4 --- /dev/null +++ b/OwnChar/Server/Data/Model/UserAccountDb.cs @@ -0,0 +1,9 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class UserAccountDb : UserAccountBase +{ + public virtual string? Password { get; set; } + public UserProfileDb? Profile { get; set; } +} diff --git a/OwnChar/Server/Data/Model/UserProfileDb.cs b/OwnChar/Server/Data/Model/UserProfileDb.cs new file mode 100644 index 0000000..7d3446b --- /dev/null +++ b/OwnChar/Server/Data/Model/UserProfileDb.cs @@ -0,0 +1,8 @@ +using OwnChar.Base.Data.Model; + +namespace OwnChar.Server.Data.Model; + +public class UserProfileDb : UserProfileBase +{ + public List Characters { get; } = []; +}