initial commit
This commit is contained in:
commit
c21f569144
37 changed files with 3956 additions and 0 deletions
75
database/box.go
Normal file
75
database/box.go
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
package database
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"foobar/model"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func SelectBox(boxURL model.BoxURL) (model.Box, error) {
|
||||
row := instance.QueryRow(
|
||||
`SELECT id, edit_code, header, private, moderation, created_at, last_updated_at
|
||||
FROM box WHERE url = $1;`,
|
||||
boxURL,
|
||||
)
|
||||
if row.Err() != nil {
|
||||
return model.Box{}, row.Err()
|
||||
}
|
||||
var (
|
||||
id uuid.UUID
|
||||
edit_code string
|
||||
header *model.Markdown
|
||||
private bool
|
||||
moderation bool
|
||||
createdAt time.Time
|
||||
lastUpdatedAt time.Time
|
||||
)
|
||||
err := row.Scan(&id, &edit_code, &header, &private, &moderation, &createdAt, &lastUpdatedAt)
|
||||
if err != nil {
|
||||
return model.Box{}, err
|
||||
}
|
||||
if header == nil {
|
||||
header = new(model.Markdown)
|
||||
*header = ""
|
||||
}
|
||||
return model.NewBox(id, boxURL, edit_code, *header, private, moderation, createdAt, lastUpdatedAt), nil
|
||||
}
|
||||
|
||||
func UpdateHeader(tx *sql.Tx, boxId uuid.UUID, text model.Markdown) error {
|
||||
result, err := tx.Exec(`UPDATE box SET header = $1 where id = $2`, text, boxId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
n, err := result.RowsAffected()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if n != 1 {
|
||||
return errNoRowsAffected
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func InsertBox(tx *sql.Tx, box model.Box, editCode string, header model.Markdown) error {
|
||||
result, err := tx.Exec(
|
||||
`INSERT INTO box (id, url, edit_code, header, private, moderation, created_at, last_updated_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`,
|
||||
box.ID(), box.Url(), editCode, header, box.Private(), box.Moderation(),
|
||||
box.CreatedAt(), box.LastUpdatedAt(),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
n, err := result.RowsAffected()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if n != 1 {
|
||||
return errNoRowsAffected
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue