go-gallery/models/album.go

129 lines
2.7 KiB
Go
Raw Normal View History

2018-04-17 09:16:03 +00:00
package models
import (
2018-04-24 09:49:58 +00:00
"database/sql"
"errors"
2018-04-17 09:16:03 +00:00
"time"
2018-04-24 09:49:58 +00:00
"git.trj.tw/golang/utils/dbtool"
2018-04-17 09:16:03 +00:00
)
// Album model
type Album struct {
2018-04-24 09:49:58 +00:00
ID string `sql:"id" cc:"id"`
UID string `sql:"uid" cc:"uid"`
Name string `sql:"name" cc:"name"`
Public bool `sql:"public" cc:"public"`
Ctime time.Time `sql:"ctime" cc:"ctime"`
Mtime time.Time `sql:"mtime" cc:"mtime"`
}
// GetAllAlbums -
func GetAllAlbums(arg ...bool) (album []Album, err error) {
var rows *sql.Rows
if len(arg) > 0 {
rows, err = x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album" where "public" = $1`, arg[0])
} else {
rows, err = x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album"`)
}
if err != nil {
return nil, err
}
defer rows.Close()
err = dbtool.ScanToStructAll(rows, &album)
if err != nil {
return nil, err
}
return
}
// GetUserAlbums -
func GetUserAlbums(uid string) (album []Album, err error) {
if len(uid) == 0 {
return nil, errors.New("user id empty")
}
rows, err := x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album" where "uid" = $1`, uid)
err = dbtool.ScanToStructAll(rows, &album)
if err != nil {
return nil, err
}
return
}
// GetAlbum -
2018-04-25 07:50:45 +00:00
func GetAlbum(id, uid string) (album *Album, err error) {
2018-04-25 09:10:29 +00:00
rows, err := x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album" where "id" = $1 and "uid" = $2 limit 1`, id, uid)
2018-04-24 09:49:58 +00:00
if err != nil {
2018-04-25 09:10:29 +00:00
return nil, err
2018-04-24 09:49:58 +00:00
}
defer rows.Close()
2018-04-25 09:10:29 +00:00
album = &Album{}
2018-04-24 09:49:58 +00:00
ok, err := dbtool.ScanToStruct(rows, album)
if err != nil {
2018-04-25 09:10:29 +00:00
return nil, err
2018-04-24 09:49:58 +00:00
}
if !ok {
return nil, nil
}
return
2018-04-17 09:16:03 +00:00
}
2018-04-25 07:50:45 +00:00
// Get -
func (a *Album) Get() (err error) {
rows, err := x.Query(`select "id", "uid", "name", "public", "ctime", "mtime" from "storage"."album" where "id" = $1`, a.ID)
if err != nil {
return err
}
ok, err := dbtool.ScanToStruct(rows, a)
if err != nil {
return err
}
if !ok {
return errors.New("album data not found")
}
return
}
// Create -
func (a *Album) Create() (err error) {
if len(a.UID) == 0 || len(a.Name) == 0 {
return errors.New("album data empty")
}
rows, err := x.Query(`insert into "storage"."album" ("uid", "name", "public") values ($1, $2, $3) returning *`, a.UID, a.Name, a.Public)
if err != nil {
return err
}
defer rows.Close()
_, err = dbtool.ScanToStruct(rows, a)
if err != nil {
return err
}
return
}
// Update -
func (a *Album) Update() (err error) {
_, err = x.Exec(`update "storage"."album" set
"name" = $1,
"public" = $2
where
"id" = $3`, a.Name, a.Public, a.ID)
return
}
2018-04-25 09:10:29 +00:00
// Delete -
func (a *Album) Delete() (err error) {
_, err = x.Exec(`delete from "storage"."album" where "id" = $1`, a.ID)
return
}