mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-22 07:32:32 +01:00
refactor(channelserver): extract GuildRepository for guild table access
Per anti-patterns.md item #9, guild-related SQL was scattered across ~15 handler files with no repository abstraction. Following the same pattern established by CharacterRepository, this centralizes all guilds, guild_characters, and guild_applications table access into a single GuildRepository (~30 methods). guild_model.go and handlers_guild_member.go are trimmed to types and pure business logic only. All handler files (guild_*, festa, mail, house, mercenary, rengoku) now call s.server.guildRepo methods instead of direct DB queries or methods on domain objects.
This commit is contained in:
@@ -258,3 +258,38 @@ func CreateTestCharacter(t *testing.T, db *sqlx.DB, userID uint32, name string)
|
||||
|
||||
return charID
|
||||
}
|
||||
|
||||
// CreateTestGuild creates a test guild with the given leader and returns the guild ID
|
||||
func CreateTestGuild(t *testing.T, db *sqlx.DB, leaderCharID uint32, name string) uint32 {
|
||||
t.Helper()
|
||||
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to begin transaction: %v", err)
|
||||
}
|
||||
|
||||
var guildID uint32
|
||||
err = tx.QueryRow(
|
||||
"INSERT INTO guilds (name, leader_id) VALUES ($1, $2) RETURNING id",
|
||||
name, leaderCharID,
|
||||
).Scan(&guildID)
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
t.Fatalf("Failed to create test guild: %v", err)
|
||||
}
|
||||
|
||||
_, err = tx.Exec(
|
||||
"INSERT INTO guild_characters (guild_id, character_id) VALUES ($1, $2)",
|
||||
guildID, leaderCharID,
|
||||
)
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
t.Fatalf("Failed to add leader to guild: %v", err)
|
||||
}
|
||||
|
||||
if err := tx.Commit(); err != nil {
|
||||
t.Fatalf("Failed to commit guild creation: %v", err)
|
||||
}
|
||||
|
||||
return guildID
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user