parent
4903f722b5
commit
60379ba1ef
10 changed files with 143 additions and 9 deletions
|
@ -31,11 +31,12 @@ type DB interface {
|
|||
IncDownloads(ID string) error
|
||||
GetDownloadCounter(ID string) (int, error)
|
||||
GetFrontPage() FrontPage
|
||||
AddSubmission(submission Submission) (id int, err error)
|
||||
AddSubmission(submission Submission, userName string) (id int, err error)
|
||||
UpdateSubmission(id int, status string, book *Book) error
|
||||
UpdateSubmissionByBook(bookID string, status string, book *Book) error
|
||||
UpdateSubmissionComment(submissionID, bookID, comment string) error
|
||||
GetSubmission(submissionID string) (submission []Submission, err error)
|
||||
GetUserSubmissions(userName string) (submission []Submission, err error)
|
||||
GetComment(bookID string) (string, error)
|
||||
|
||||
BookLister
|
||||
|
@ -228,12 +229,17 @@ CREATE INDEX IF NOT EXISTS visits_book_id_idx on visits(book_id);
|
|||
-- Submissions indexes
|
||||
CREATE INDEX IF NOT EXISTS submissions_id_idx on submissions(submission_id);
|
||||
CREATE INDEX IF NOT EXISTS submissions_book_idx on submissions(book_id);
|
||||
CREATE INDEX IF NOT EXISTS submissions_user_idx on submissions(user_id);
|
||||
|
||||
-- Submissions constraint
|
||||
ALTER TABLE ONLY submissions
|
||||
DROP CONSTRAINT IF EXISTS submissions_book_id_fkey;
|
||||
ALTER TABLE ONLY submissions
|
||||
ADD CONSTRAINT submissions_book_id_fkey FOREIGN KEY (book_id) REFERENCES books(id) ON DELETE SET NULL;
|
||||
ALTER TABLE ONLY submissions
|
||||
DROP CONSTRAINT IF EXISTS submissions_user_id_fkey;
|
||||
ALTER TABLE ONLY submissions
|
||||
ADD CONSTRAINT submissions_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL;
|
||||
|
||||
-- BookLists indexes
|
||||
CREATE INDEX IF NOT EXISTS book_lists_list_id_idx on book_lists(list_id);
|
||||
|
|
|
@ -101,7 +101,7 @@ func (db *roDB) GetFrontPage() FrontPage {
|
|||
return db.db.GetFrontPage()
|
||||
}
|
||||
|
||||
func (db *roDB) AddSubmission(submission Submission) (id int, err error) {
|
||||
func (db *roDB) AddSubmission(submission Submission, userName string) (id int, err error) {
|
||||
return 0, errors.New("RO database")
|
||||
}
|
||||
|
||||
|
@ -125,6 +125,10 @@ func (db *roDB) GetSubmission(submissionID string) (submission []Submission, err
|
|||
return db.db.GetSubmission(submissionID)
|
||||
}
|
||||
|
||||
func (db *roDB) GetUserSubmissions(userName string) (submission []Submission, err error) {
|
||||
return db.db.GetUserSubmissions(userName)
|
||||
}
|
||||
|
||||
func (db *roDB) NewBookList(listID, title, username string, description []string) error {
|
||||
return errors.New("RO database")
|
||||
}
|
||||
|
|
|
@ -1,16 +1,26 @@
|
|||
package database
|
||||
|
||||
// TODO: clean up old submissions
|
||||
|
||||
type Submission struct {
|
||||
ID int `sql:"type:serial"`
|
||||
SubmissionID string `sql:"type:varchar(16)"`
|
||||
Filename string
|
||||
Status string
|
||||
Comment string
|
||||
UserID int `sql:"type:integer,unique"`
|
||||
User *User
|
||||
BookID string `sql:"type:varchar(16),unique"`
|
||||
Book *Book
|
||||
}
|
||||
|
||||
func (db *pgDB) AddSubmission(submission Submission) (id int, err error) {
|
||||
func (db *pgDB) AddSubmission(submission Submission, userName string) (id int, err error) {
|
||||
if userName != "" {
|
||||
user, err := db.getUser(userName)
|
||||
if err == nil {
|
||||
submission.UserID = user.ID
|
||||
}
|
||||
}
|
||||
err = db.sql.Insert(&submission)
|
||||
return submission.ID, err
|
||||
}
|
||||
|
@ -61,6 +71,15 @@ func (db *pgDB) GetSubmission(submissionID string) (submission []Submission, err
|
|||
return
|
||||
}
|
||||
|
||||
func (db *pgDB) GetUserSubmissions(userName string) (submission []Submission, err error) {
|
||||
err = db.sql.Model(&submission).
|
||||
Column("Book", "User").
|
||||
Where("username = ?", userName).
|
||||
Order("id DESC").
|
||||
Select()
|
||||
return
|
||||
}
|
||||
|
||||
func extractID(book *Book) interface{} {
|
||||
if book == nil {
|
||||
return nil
|
||||
|
|
Reference in a new issue