48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package database
|
|
|
|
type Submission struct {
|
|
ID int `sql:"type:serial"`
|
|
SubmissionID string `sql:"type:varchar(16)"`
|
|
Filename string
|
|
Status string
|
|
BookID string `sql:"type:varchar(16),unique"`
|
|
Book *Book
|
|
}
|
|
|
|
func (db *pgDB) AddSubmission(submission Submission) (id int, err error) {
|
|
err = db.sql.Insert(&submission)
|
|
return submission.ID, err
|
|
}
|
|
|
|
func (db *pgDB) UpdateSubmission(id int, status string, book *Book) error {
|
|
_, err := db.sql.Model(&Submission{}).
|
|
Set("status = ?", status).
|
|
Set("book_id = ?", extractID(book)).
|
|
Where("id = ?", id).
|
|
Update()
|
|
return err
|
|
}
|
|
|
|
func (db *pgDB) UpdateSubmissionByBook(bookID string, status string, book *Book) error {
|
|
_, err := db.sql.Model(&Submission{}).
|
|
Set("status = ?", status).
|
|
Set("book_id = ?", extractID(book)).
|
|
Where("book_id = ?", bookID).
|
|
Update()
|
|
return err
|
|
}
|
|
|
|
func (db *pgDB) GetSubmission(submissionID string) (submission []Submission, err error) {
|
|
err = db.sql.Model(&submission).
|
|
Column("Book").
|
|
Where("submission_id = ?", submissionID).
|
|
Select()
|
|
return
|
|
}
|
|
|
|
func extractID(book *Book) interface{} {
|
|
if book == nil {
|
|
return nil
|
|
}
|
|
return book.ID
|
|
}
|