mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 10:53:44 +00:00
feat(db): guilds, guild_members, guild_invites and guild_events
Four tables (MySQL migration 97, SQLite 80) and the IGuilds interface with MySQL, SQLite and TestSQL implementations, for the guild system (docs/Guilds.md). A guild has a name (unique without regard to case), a name status like pet_names (1 waiting for moderation, 2 approved), its founder and when it was made. A character is in at most one guild (guild_members, with its rank: 1 leader, 2 officer, 3 veteran, 4 recruit, the client's names, and when it joined) and has at most one pending invite (guild_invites). guild_events is each guild's history and outlives the guild. Deleting a character removes its membership and the invites to and from it. Nothing uses the tables yet. Check: both migrations run on a fresh and an existing database; DatabaseParityTests Guilds passes against MariaDB (DLU_TEST_MYSQL_HOST) and SQLite gives the same results. Nothing to check in game. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -227,6 +227,23 @@ public:
|
||||
std::vector<UgcPlacement> GetUgcPlacements(const std::vector<LWOOBJID>& ugcIds) override;
|
||||
std::vector<UgcMail> GetUgcMail(const std::vector<LWOOBJID>& subkeys, const LOT modelItemLot) override;
|
||||
|
||||
// IGuilds
|
||||
int64_t InsertGuild(const Guild& guild) override;
|
||||
std::optional<Guild> GetGuild(int64_t guildId) override;
|
||||
std::optional<Guild> GetGuildByName(const std::string& name) override;
|
||||
void SetGuildName(int64_t guildId, const std::string& name, int32_t nameStatus) override;
|
||||
void DeleteGuild(int64_t guildId) override;
|
||||
void AddGuildMember(const Member& member) override;
|
||||
void RemoveGuildMember(LWOOBJID characterId) override;
|
||||
void SetGuildMemberRank(LWOOBJID characterId, uint8_t rank) override;
|
||||
std::optional<Member> GetGuildMember(LWOOBJID characterId) override;
|
||||
std::vector<Member> GetGuildMembers(int64_t guildId) override;
|
||||
void SetGuildInvite(const Invite& invite) override;
|
||||
std::optional<Invite> GetGuildInvite(LWOOBJID characterId) override;
|
||||
void DeleteGuildInvite(LWOOBJID characterId) override;
|
||||
uint64_t InsertGuildEvent(const Event& event) override;
|
||||
std::vector<Event> GetGuildEvents(int64_t guildId, uint32_t limit) override;
|
||||
GuildPage GetGuildPage(uint32_t start, uint32_t length, const std::string& search, bool pendingOnly) override;
|
||||
// IPermissionGrants
|
||||
uint64_t InsertPermissionGrant(const Grant& grant) override;
|
||||
std::optional<Grant> GetPermissionGrant(uint64_t id) override;
|
||||
|
||||
Reference in New Issue
Block a user