summaryrefslogtreecommitdiff
path: root/internal/database
diff options
context:
space:
mode:
Diffstat (limited to 'internal/database')
-rw-r--r--internal/database/repos/action.go30
-rw-r--r--internal/database/repos/userscore.go32
2 files changed, 62 insertions, 0 deletions
diff --git a/internal/database/repos/action.go b/internal/database/repos/action.go
new file mode 100644
index 0000000..31018b7
--- /dev/null
+++ b/internal/database/repos/action.go
@@ -0,0 +1,30 @@
+package repos
+
+import "apjournal/internal/models"
+
+type ActionRepo interface {
+ DBActionCreate(req *models.Action) error
+ DBActionList(username string) ([]models.Action, error)
+ DBActionDone(name string) error
+}
+
+func (p *Provider) DBActionCreate(req *models.Action) error {
+ _, err := p.db.NamedExec(`
+ INSERT INTO action(username, name, magnitude, repeatable, type, done)
+ VALUES (:username, :name, :magnitude, :repeatable, :type, :done);`, req)
+ return err
+}
+
+func (p *Provider) DBActionList(username string) ([]models.Action, error) {
+ resp := []models.Action{}
+ query := "SELECT * FROM action WHERE username=$1;"
+ if err := p.db.Select(&resp, query, username); err != nil {
+ return nil, err
+ }
+ return resp, nil
+}
+
+func (p *Provider) DBActionDone(name string) error {
+ // should reset at burn time
+ return nil
+}
diff --git a/internal/database/repos/userscore.go b/internal/database/repos/userscore.go
new file mode 100644
index 0000000..5c09004
--- /dev/null
+++ b/internal/database/repos/userscore.go
@@ -0,0 +1,32 @@
+package repos
+
+import "apjournal/internal/models"
+
+type UserScoreRepo interface {
+ DBUserScoreCreate(req *models.UserScore) error
+ DBUserScoreGet(username string) (*models.UserScore, error)
+ DBUserScoreUpdate(req *models.UserScore) error
+}
+
+func (p *Provider) DBUserScoreCreate(req *models.UserScore) error {
+ _, err := p.db.NamedExec(`
+ INSERT INTO user_score(username, burn_time, score)
+ VALUES (:username, :burn_time, :score);`, req)
+ return err
+}
+
+func (p *Provider) DBUserScoreGet(username string) (*models.UserScore, error) {
+ resp := models.UserScore{}
+ query := "SELECT * FROM user_score WHERE username=$1;"
+ if err := p.db.Get(&resp, query, username); err != nil {
+ return nil, err
+ }
+ return &resp, nil
+}
+
+func (p *Provider) DBUserScoreUpdate(req *models.UserScore) error {
+ stmt := `UPDATE user_score SET burn_time=$1, score=$2
+ WHERE username=$3;`
+ _, err := p.db.Exec(stmt, req.BurnTime, req.Score, req.Username)
+ return err
+}