2023-09-07 17:53:11 +08:00

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
}