This repository has been archived on 2025-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
trantor/lib/database/submissions.go
2018-04-07 23:50:01 +00:00

69 lines
1.7 KiB
Go

package database
type Submission struct {
ID int `sql:"type:serial"`
SubmissionID string `sql:"type:varchar(16)"`
Filename string
Status string
Comment 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) UpdateSubmissionComment(submissionID, bookID, comment string) error {
_, err := db.sql.Model(&Submission{}).
Set("comment = ?", comment).
Where("submission_id = ?", submissionID).
Where("book_id = ?", bookID).
Update()
return err
}
func (db *pgDB) GetComment(bookID string) (string, error) {
var submission Submission
err := db.sql.Model(&submission).
Where("book_id = ?", bookID).
Select()
if err != nil {
return "", err
}
return submission.Comment, nil
}
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
}