FILE / Unmei/Backend
v1/characters_sql.go
Исходный файл и его история в репозитории.
45 lines
1.5 KiB
Go
Executable File
45 lines
1.5 KiB
Go
Executable File
package v1
|
|
|
|
type Character struct {
|
|
ID int32 `json:"id"`
|
|
OriginalName string `db:"original_name" json:"original_name"`
|
|
LocalizedName string `db:"localized_name" json:"localized_name"`
|
|
Description string `json:"description"`
|
|
Image string `json:"image"`
|
|
Main bool `json:"main"`
|
|
}
|
|
|
|
func FetchCharacters() ([]*Character, error) {
|
|
var characters = make([]*Character, 0)
|
|
err := database.Select(&characters, `select * from characters;`)
|
|
return characters, err
|
|
}
|
|
|
|
func FetchCharacter(id int) (*Character, error) {
|
|
var char = &Character{}
|
|
err := database.Get(char, `select * from characters where id=$1;`, id)
|
|
return char, err
|
|
}
|
|
func UpdateCharacter(character *Character) (*Character, error) {
|
|
rows, err := database.NamedQuery("update characters set original_name=:original_name, localized_name=:localized_name, description=:description, image=:image where id=:id returning *;", character)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
char := new(Character)
|
|
if rows.Next() {
|
|
err = rows.StructScan(char)
|
|
}
|
|
return char, err
|
|
}
|
|
func DeleteCharacter(id int) error {
|
|
_, err := database.Exec("delete from characters where id=$1;", id)
|
|
return err
|
|
}
|
|
|
|
func FetchCharacterNovels(id int) ([]Novel, error) {
|
|
var novels = make([]Novel, 0)
|
|
err := database.Select(&novels, `select id, original_name, localized_name, coalesce(n.image, '') as image from character_novel join novels n on (n.id=character_novel.novel_id) where character_id=$1;`, id)
|
|
return novels, err
|
|
}
|