pico

created pr with 97.1 on 2025-12-18T04:19:09Z · by c8ef7d19
added 97.2 on 2025-12-18T04:36:52Z · by c8ef7d19
1: fdc255e = 1: fdc255e refactor: remove unused db methods
2: 3f855f6 = 2: 3f855f6 chore: add tests for postgres db impl
3: 7cd29a6 = 3: 7cd29a6 refactor: use sqlx interface
4: acd449e = 4: acd449e chore: add db tags
5: f6ed0d7 = 5: f6ed0d7 refactor: use sqlx
6: 29035c6 = 6: 29035c6 refactor: replace custom sql functions with sqlx
7: d4ea6d9 = 7: d4ea6d9 refactor: inline all sql queries
-: ------- > 8: 4bd37ed refactor: use `select * from` where possible
cmds
checkout latest patchset:
ssh pr.pico.sh print 97 | git am -3
checkout any patchset in a patch request:
ssh pr.pico.sh print 97.[rev] | git am -3
add changes to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add 97
+2 -1 cmd/scripts/dates/dates.go #
......@@ -7,12 +7,13 @@ import (
77 "os"
88 "time"
99
10+ "github.com/jmoiron/sqlx"
1011 "github.com/picosh/pico/pkg/db"
1112 "github.com/picosh/pico/pkg/db/postgres"
1213 "github.com/picosh/pico/pkg/shared"
1314 )
1415
15-func findPosts(dbpool *sql.DB) ([]*db.Post, error) {
16+func findPosts(dbpool *sqlx.DB) ([]*db.Post, error) {
1617 var posts []*db.Post
1718 rs, err := dbpool.Query(`SELECT
1819 id, user_id, filename, title, text, description,
+2 -1 cmd/scripts/migrate/migrate.go #
......@@ -7,12 +7,13 @@ import (
77 "log/slog"
88 "os"
99
10+ "github.com/jmoiron/sqlx"
1011 "github.com/picosh/pico/pkg/db"
1112 "github.com/picosh/pico/pkg/db/postgres"
1213 "github.com/picosh/pico/pkg/shared"
1314 )
1415
15-func findPosts(dbpool *sql.DB) ([]*db.Post, error) {
16+func findPosts(dbpool *sqlx.DB) ([]*db.Post, error) {
1617 var posts []*db.Post
1718 rs, err := dbpool.Query(`SELECT
1819 posts.id, user_id, filename, title, text, description,
+2 -2 cmd/scripts/tags/tags.go #
......@@ -1,16 +1,16 @@
11 package main
22
33 import (
4- "database/sql"
54 "log/slog"
65 "os"
76
7+ "github.com/jmoiron/sqlx"
88 "github.com/picosh/pico/pkg/db"
99 "github.com/picosh/pico/pkg/db/postgres"
1010 "github.com/picosh/pico/pkg/shared"
1111 )
1212
13-func findPosts(dbpool *sql.DB) ([]*db.Post, error) {
13+func findPosts(dbpool *sqlx.DB) ([]*db.Post, error) {
1414 var posts []*db.Post
1515 rs, err := dbpool.Query(`SELECT
1616 posts.id, user_id, filename, title, text, description,
+3 -2 pkg/db/postgres/storage.go #
......@@ -12,6 +12,7 @@ import (
1212
1313 "slices"
1414
15+ "github.com/jmoiron/sqlx"
1516 _ "github.com/lib/pq"
1617 "github.com/picosh/pico/pkg/db"
1718 "github.com/picosh/utils"
......@@ -215,7 +216,7 @@ const (
215216
216217 type PsqlDB struct {
217218 Logger *slog.Logger
218- Db *sql.DB
219+ Db *sqlx.DB
219220 }
220221
221222 type RowScanner interface {
......@@ -297,7 +298,7 @@ func NewDB(databaseUrl string, logger *slog.Logger) *PsqlDB {
297298 }
298299 d.Logger.Info("Connecting to postgres", "databaseUrl", databaseUrl)
299300
300- db, err := sql.Open("postgres", databaseUrl)
301+ db, err := sqlx.Connect("postgres", databaseUrl)
301302 if err != nil {
302303 d.Logger.Error(err.Error())
303304 }
+4 -4 pkg/db/postgres/storage_test.go #
......@@ -2,7 +2,6 @@ package postgres
22
33 import (
44 "context"
5- "database/sql"
65 "fmt"
76 "log/slog"
87 "os"
......@@ -13,6 +12,7 @@ import (
1312 "testing"
1413 "time"
1514
15+ "github.com/jmoiron/sqlx"
1616 _ "github.com/lib/pq"
1717 "github.com/picosh/pico/pkg/db"
1818 "github.com/testcontainers/testcontainers-go"
......@@ -34,14 +34,14 @@ func setupContainerRuntime() bool {
3434 if cmd := exec.Command("podman", "info"); cmd.Run() == nil {
3535 // For podman, we need to ensure the socket is running
3636 // User should run: systemctl --user start podman.socket
37- os.Setenv("TESTCONTAINERS_RYUK_DISABLED", "true")
37+ _ = os.Setenv("TESTCONTAINERS_RYUK_DISABLED", "true")
3838
3939 // Check if socket exists and is accessible
4040 xdgRuntime := os.Getenv("XDG_RUNTIME_DIR")
4141 if xdgRuntime != "" {
4242 socketPath := xdgRuntime + "/podman/podman.sock"
4343 if _, err := os.Stat(socketPath); err == nil {
44- os.Setenv("DOCKER_HOST", "unix://"+socketPath)
44+ _ = os.Setenv("DOCKER_HOST", "unix://"+socketPath)
4545 return true
4646 }
4747 }
......@@ -127,7 +127,7 @@ func getProjectRoot() string {
127127 return filepath.Join(filepath.Dir(filename), "..", "..", "..")
128128 }
129129
130-func setupTestSchema(db *sql.DB) error {
130+func setupTestSchema(db *sqlx.DB) error {
131131 projectRoot := getProjectRoot()
132132 migrationsDir := filepath.Join(projectRoot, "sql", "migrations")
133133
Back to top