summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-27 23:55:31 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-27 23:55:31 +0200
commita55cfe8205d5cb2fb0948c173f23ad71d6614d13 (patch)
tree386a341b3bcc543ca8ac7bfe7ff944cac669fe25 /model
parentdf3068728abacfc98fa19f3dba62b35f65aea731 (diff)
Rename everything to locker/lock
Diffstat (limited to 'model')
-rw-r--r--model/lock.go110
-rw-r--r--model/timer.go110
2 files changed, 110 insertions, 110 deletions
diff --git a/model/lock.go b/model/lock.go
new file mode 100644
index 0000000..555d31e
--- /dev/null
+++ b/model/lock.go
@@ -0,0 +1,110 @@
+package model
+
+import (
+ "database/sql"
+ "log"
+ "time"
+
+ "stevenlr.com/locker/utils"
+)
+
+func GenerateLockToken() (string, error) {
+ return utils.GenerateRandomString(66)
+}
+
+type Lock struct {
+ Id UUID
+ Name string
+ StartTime Time
+ EndTime Time
+ Owner UUID
+ Token string
+}
+
+func (self Lock) IsFinished() bool {
+ return MakeTimeNow().Compare(self.EndTime) >= 0
+}
+
+func InsertLock(tx *sql.Tx, name string, seconds int, ownerId UUID) error {
+ now := MakeTimeNow()
+ end := Time(time.Time(now).Add(time.Duration(seconds) * time.Second))
+ id := MakeUUID()
+ token, _ := GenerateLockToken()
+ _, err := tx.Exec(`
+ INSERT INTO Lock VALUES ($1, $2, $3, $4, $5, $6)`, id, name, now, end, ownerId, token)
+ return err
+}
+
+func GetLocksForUser(db *sql.DB, owner UUID) []Lock {
+ rows, err := db.Query("SELECT Id, Name FROM Lock WHERE Owner=$1", owner)
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ locks := []Lock{}
+ for rows.Next() {
+ var t Lock
+ if err := rows.Scan(&t.Id, &t.Name); err == nil {
+ locks = append(locks, t)
+ }
+ }
+
+ return locks
+}
+
+func GetLockForUser(db *sql.DB, id UUID, userId UUID) *Lock {
+ row := db.QueryRow("SELECT Id, Name, StartTime, EndTime, Owner, Token FROM Lock WHERE Id=$1 AND Owner=$2", id, userId)
+
+ var t Lock
+ if err := row.Scan(&t.Id, &t.Name, &t.StartTime, &t.EndTime, &t.Owner, &t.Token); err == nil {
+ return &t
+ }
+
+ return nil
+}
+
+func GetLockWithToken(db *sql.DB, id UUID, token string) *Lock {
+ row := db.QueryRow("SELECT Id, Name, StartTime, EndTime, Owner, Token FROM Lock WHERE Id=$1 AND Token=$2", id, token)
+
+ var t Lock
+ if err := row.Scan(&t.Id, &t.Name, &t.StartTime, &t.EndTime, &t.Owner, &t.Token); err == nil {
+ return &t
+ }
+
+ return nil
+}
+
+func DeleteLock(db *sql.DB, id UUID, userId UUID) bool {
+ res, err := db.Exec("DELETE FROM Lock WHERE Id=$1 AND Owner=$2", id, userId)
+ if err != nil {
+ return false
+ }
+
+ affected, err := res.RowsAffected()
+ return err == nil && affected == 1
+}
+
+func UpdateLockEndTime(db *sql.DB, id UUID, endTime Time, userId UUID) bool {
+ res, err := db.Exec("UPDATE Lock SET EndTime=$1 WHERE Id=$2 AND Owner=$3", endTime, id, userId)
+ if err != nil {
+ return false
+ }
+
+ affected, err := res.RowsAffected()
+ return err == nil && affected == 1
+}
+
+func RegenerateLockToken(db *sql.DB, id UUID, userId UUID) bool {
+ newToken, err := GenerateLockToken()
+ if err != nil {
+ return false
+ }
+
+ res, err := db.Exec("UPDATE Lock SET Token=$1 WHERE Id=$2 AND Owner=$3", newToken, id, userId)
+ if err != nil {
+ return false
+ }
+
+ affected, err := res.RowsAffected()
+ return err == nil && affected == 1
+}
diff --git a/model/timer.go b/model/timer.go
deleted file mode 100644
index 3f13d0d..0000000
--- a/model/timer.go
+++ /dev/null
@@ -1,110 +0,0 @@
-package model
-
-import (
- "database/sql"
- "log"
- "time"
-
- "stevenlr.com/timer/utils"
-)
-
-func GenerateTimerToken() (string, error) {
- return utils.GenerateRandomString(66)
-}
-
-type Timer struct {
- Id UUID
- Name string
- StartTime Time
- EndTime Time
- Owner UUID
- Token string
-}
-
-func (self Timer) IsFinished() bool {
- return MakeTimeNow().Compare(self.EndTime) >= 0
-}
-
-func InsertTimer(tx *sql.Tx, name string, seconds int, ownerId UUID) error {
- now := MakeTimeNow()
- end := Time(time.Time(now).Add(time.Duration(seconds) * time.Second))
- id := MakeUUID()
- token, _ := GenerateTimerToken()
- _, err := tx.Exec(`
- INSERT INTO Timer VALUES ($1, $2, $3, $4, $5, $6)`, id, name, now, end, ownerId, token)
- return err
-}
-
-func GetTimersForUser(db *sql.DB, owner UUID) []Timer {
- rows, err := db.Query("SELECT Id, Name FROM Timer WHERE Owner=$1", owner)
- if err != nil {
- log.Fatalln(err)
- }
-
- timers := []Timer{}
- for rows.Next() {
- var t Timer
- if err := rows.Scan(&t.Id, &t.Name); err == nil {
- timers = append(timers, t)
- }
- }
-
- return timers
-}
-
-func GetTimerForUser(db *sql.DB, id UUID, userId UUID) *Timer {
- row := db.QueryRow("SELECT Id, Name, StartTime, EndTime, Owner, Token FROM Timer WHERE Id=$1 AND Owner=$2", id, userId)
-
- var t Timer
- if err := row.Scan(&t.Id, &t.Name, &t.StartTime, &t.EndTime, &t.Owner, &t.Token); err == nil {
- return &t
- }
-
- return nil
-}
-
-func GetTimerWithToken(db *sql.DB, id UUID, token string) *Timer {
- row := db.QueryRow("SELECT Id, Name, StartTime, EndTime, Owner, Token FROM Timer WHERE Id=$1 AND Token=$2", id, token)
-
- var t Timer
- if err := row.Scan(&t.Id, &t.Name, &t.StartTime, &t.EndTime, &t.Owner, &t.Token); err == nil {
- return &t
- }
-
- return nil
-}
-
-func DeleteTimer(db *sql.DB, id UUID, userId UUID) bool {
- res, err := db.Exec("DELETE FROM Timer WHERE Id=$1 AND Owner=$2", id, userId)
- if err != nil {
- return false
- }
-
- affected, err := res.RowsAffected()
- return err == nil && affected == 1
-}
-
-func UpdateTimerEndTime(db *sql.DB, id UUID, endTime Time, userId UUID) bool {
- res, err := db.Exec("UPDATE Timer SET EndTime=$1 WHERE Id=$2 AND Owner=$3", endTime, id, userId)
- if err != nil {
- return false
- }
-
- affected, err := res.RowsAffected()
- return err == nil && affected == 1
-}
-
-func RegenerateTimerToken(db *sql.DB, id UUID, userId UUID) bool {
- newToken, err := GenerateTimerToken()
- if err != nil {
- return false
- }
-
- res, err := db.Exec("UPDATE Timer SET Token=$1 WHERE Id=$2 AND Owner=$3", newToken, id, userId)
- if err != nil {
- return false
- }
-
- affected, err := res.RowsAffected()
- return err == nil && affected == 1
-}