83 lines
2.4 KiB
Go
83 lines
2.4 KiB
Go
package model
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
"main/db"
|
|
)
|
|
|
|
type Guild struct {
|
|
AutoId int64 `db:"idx"`
|
|
GuildId int64 `db:"guild_id"`
|
|
Name string `db:"name"`
|
|
LeaderId string `db:"leader_account_id"`
|
|
Avatar int32 `db:"avatar"`
|
|
Notice sql.NullString `db:"notice"`
|
|
JoinCond int32 `db:"join_cond"`
|
|
JoinCondValue int32 `db:"join_cond_value"`
|
|
TotalStars int32 `db:"total_stars"`
|
|
TotalKills int32 `db:"total_kills"`
|
|
ChickenDinners int32 `db:"chicken_dinners"`
|
|
MaxMembers int32 `db:"max_members"`
|
|
}
|
|
|
|
func CreateGuild(guild *Guild) (int64, error) {
|
|
query := "INSERT INTO t_guild (guild_id, name, leader_account_id) VALUES (?, ?, ?)"
|
|
result, err := db.GetDB().Exec(query, guild.GuildId, guild.Name, guild.LeaderId)
|
|
if err != nil {
|
|
log.Printf("Error creating guild: %v", err)
|
|
return 0, err
|
|
}
|
|
autoId, err := result.LastInsertId()
|
|
if err != nil {
|
|
log.Printf("Error getting last insert ID: %v", err)
|
|
return 0, err
|
|
}
|
|
return autoId, nil
|
|
}
|
|
|
|
func GetGuild(guildId int64) (*Guild, error) {
|
|
query := "SELECT idx, guild_id, name, leader_account_id, avatar, notice, join_cond, join_cond_value, total_stars, total_kills, chicken_dinners, max_members FROM t_guild WHERE guild_id = ?"
|
|
var guild Guild
|
|
err := db.GetDB().Get(&guild, query, guildId)
|
|
if err != nil {
|
|
if err == sql.ErrNoRows {
|
|
return nil, nil // 不存在
|
|
}
|
|
log.Printf("Error getting guild by ID: %v", err)
|
|
return nil, err
|
|
}
|
|
return &guild, nil
|
|
}
|
|
|
|
func UpdateGuildNotice(guild *Guild) error {
|
|
query := "UPDATE t_guild SET `notice`=? WHERE guild_id = ?"
|
|
_, err := db.GetDB().Exec(query, guild.Notice, guild.GuildId)
|
|
if err != nil {
|
|
log.Printf("Error updating guild notice: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func DeleteGuild(guildId int64) error {
|
|
query := "UPDATE t_guild SET `is_deleted`=? WHERE guild_id = ?"
|
|
_, err := db.GetDB().Exec(query, 1, guildId)
|
|
if err != nil {
|
|
log.Printf("Error deleting guild: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func ListGuilds() ([]Guild, error) {
|
|
query := "SELECT idx, guild_id, name, leader_account_id, avatar, notice, join_cond, join_cond_value, total_stars, total_kills, chicken_dinners, max_members FROM t_guild WHERE is_deleted=0"
|
|
var guilds []Guild
|
|
err := db.GetDB().Select(&guilds, query)
|
|
if err != nil {
|
|
log.Printf("Error listing users: %v", err)
|
|
return nil, err
|
|
}
|
|
return guilds, nil
|
|
}
|