Diff
1diff --git a/cmd/soft/root.go b/cmd/soft/root.go
2index 329ec143eab3ce60ac4284920d05e9f301fc7a0d..31a1f78031a0e477841136cae5460c147bd38f87 100644
3--- a/cmd/soft/root.go
4+++ b/cmd/soft/root.go
5@@ -15,11 +15,8 @@ import (
6 logr "github.com/charmbracelet/soft-serve/server/log"
7 "github.com/charmbracelet/soft-serve/server/store"
8 "github.com/charmbracelet/soft-serve/server/store/database"
9- _ "github.com/lib/pq" // postgres driver
10 "github.com/spf13/cobra"
11 "go.uber.org/automaxprocs/maxprocs"
12-
13- _ "modernc.org/sqlite" // sqlite driver
14 )
15
16 var (
17diff --git a/server/db/db.go b/server/db/db.go
18index 587880dc6201ff4bfb68071a99d55f9e6b73de47..ae0bfcaae645591161dcf2bc7fc10bbf946bb6ba 100644
19--- a/server/db/db.go
20+++ b/server/db/db.go
21@@ -9,6 +9,7 @@ import (
22 "github.com/charmbracelet/log"
23 "github.com/charmbracelet/soft-serve/server/config"
24 "github.com/jmoiron/sqlx"
25+ _ "github.com/lib/pq" // postgres driver
26 _ "modernc.org/sqlite" // sqlite driver
27 )
28
29diff --git a/server/store/database/access_token.go b/server/store/database/access_token.go
30index 0ba0d822f66201ef31415ba651ad617742b69fc4..16f72b6aa37e08d0d0cf09098777a39a17aa2bf7 100644
31--- a/server/store/database/access_token.go
32+++ b/server/store/database/access_token.go
33@@ -16,24 +16,19 @@ var _ store.AccessTokenStore = (*accessTokenStore)(nil)
34 // CreateAccessToken implements store.AccessTokenStore.
35 func (s *accessTokenStore) CreateAccessToken(ctx context.Context, h db.Handler, name string, userID int64, token string, expiresAt time.Time) (models.AccessToken, error) {
36 queryWithoutExpires := `INSERT INTO access_tokens (name, user_id, token, created_at, updated_at)
37- VALUES (?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`
38+ VALUES (?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) RETURNING id`
39 queryWithExpires := `INSERT INTO access_tokens (name, user_id, token, expires_at, created_at, updated_at)
40- VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`
41+ VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) RETURNING id`
42
43 query := queryWithoutExpires
44 values := []interface{}{name, userID, token}
45 if !expiresAt.IsZero() {
46 query = queryWithExpires
47- values = append(values, expiresAt)
48+ values = append(values, expiresAt.UTC())
49 }
50
51- result, err := h.ExecContext(ctx, query, values...)
52- if err != nil {
53- return models.AccessToken{}, err
54- }
55-
56- id, err := result.LastInsertId()
57- if err != nil {
58+ var id int64
59+ if err := h.GetContext(ctx, &id, h.Rebind(query), values...); err != nil {
60 return models.AccessToken{}, err
61 }
62
63diff --git a/server/store/database/collab.go b/server/store/database/collab.go
64index e93044e01cab1e49c9d57939b110001c7b64e9ba..ea4e24a2f387d76a0c3fc45567f9870f70fded2b 100644
65--- a/server/store/database/collab.go
66+++ b/server/store/database/collab.go
67@@ -93,8 +93,8 @@ func (*collabStore) ListCollabsByRepoAsUsers(ctx context.Context, tx db.Handler,
68 users.*
69 FROM
70 users
71- INNER JOIN repos ON repos.id = collabs.repo_id
72 INNER JOIN collabs ON collabs.user_id = users.id
73+ INNER JOIN repos ON repos.id = collabs.repo_id
74 WHERE
75 repos.name = ?
76 `)
77diff --git a/server/store/database/user.go b/server/store/database/user.go
78index 5f00f45b75295cdcc92cb148cfe8197cf1c022be..95572010d9f7da304dd79c750346349c8dde1de4 100644
79--- a/server/store/database/user.go
80+++ b/server/store/database/user.go
81@@ -44,14 +44,10 @@ func (*userStore) CreateUser(ctx context.Context, tx db.Handler, username string
82 }
83
84 query := tx.Rebind(`INSERT INTO users (username, admin, updated_at)
85- VALUES (?, ?, CURRENT_TIMESTAMP);`)
86- result, err := tx.ExecContext(ctx, query, username, isAdmin)
87- if err != nil {
88- return err
89- }
90+ VALUES (?, ?, CURRENT_TIMESTAMP) RETURNING id;`)
91
92- userID, err := result.LastInsertId()
93- if err != nil {
94+ var userID int64
95+ if err := tx.GetContext(ctx, &userID, query, username, isAdmin); err != nil {
96 return err
97 }
98