summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-03-11 00:23:11 +0530
committerBobby <[email protected]>2026-03-11 00:23:11 +0530
commitb023fc7c2c0024387a10ca32656b063e33db4c53 (patch)
tree7757bb9adb306a069df8701f4fd1cbadbb55257a
parent847ade6db1282d6342cd433e651ee6f50d6be866 (diff)
downloadpagoda-b023fc7c2c0024387a10ca32656b063e33db4c53.tar.xz
pagoda-b023fc7c2c0024387a10ca32656b063e33db4c53.zip
refactor: remove libsql support and clean up database handling
-rw-r--r--scripts/entrypoint.sh72
-rwxr-xr-xscripts/seed.sh94
-rw-r--r--shrine/config/functions.go2
-rw-r--r--shrine/database/database.go10
-rw-r--r--shrine/enums/database.go1
-rw-r--r--shrine/go.mod10
-rw-r--r--shrine/go.sum14
-rw-r--r--shrine/messages/system.go1
8 files changed, 26 insertions, 178 deletions
diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh
index 2d894c9..6e68488 100644
--- a/scripts/entrypoint.sh
+++ b/scripts/entrypoint.sh
@@ -1,68 +1,20 @@
#!/bin/bash
set -e
-if [ "$SEED" = "true" ]; then
- echo "[entrypoint] SEED=true, wiping database..."
- if [ "$DB_DRIVER" = "sqlite" ]; then
- rm -f "$DSN"
- echo "[entrypoint] Deleted $DSN"
- elif [ "$DB_DRIVER" = "libsql" ]; then
- TURSO_URL=$(echo "$DSN" | sed 's|^libsql://|https://|; s|?.*||')
- TURSO_TOKEN=$(echo "$DSN" | sed -n 's/.*authToken=\(.*\)/\1/p')
- INDEXES=$(curl -s "${TURSO_URL}/v2/pipeline" \
- -H "Authorization: Bearer ${TURSO_TOKEN}" \
- -H "Content-Type: application/json" \
- -d '{"requests":[{"type":"execute","stmt":{"sql":"SELECT name FROM sqlite_master WHERE type='\''index'\'' AND name NOT LIKE '\''sqlite_%'\''"}},{"type":"close"}]}' \
- | grep -o '"type":"text","value":"[^"]*"' | sed 's/.*"value":"//;s/"//')
- TABLES=$(curl -s "${TURSO_URL}/v2/pipeline" \
- -H "Authorization: Bearer ${TURSO_TOKEN}" \
- -H "Content-Type: application/json" \
- -d '{"requests":[{"type":"execute","stmt":{"sql":"SELECT name FROM sqlite_master WHERE type='\''table'\'' AND name NOT LIKE '\''sqlite_%'\'' AND name NOT LIKE '\''_litestream%'\''"}},{"type":"close"}]}' \
- | grep -o '"type":"text","value":"[^"]*"' | sed 's/.*"value":"//;s/"//')
- STMTS=""
- for INDEX in $INDEXES; do
- echo "[entrypoint] Dropping index: $INDEX"
- STMTS="${STMTS}{\"type\":\"execute\",\"stmt\":{\"sql\":\"DROP INDEX IF EXISTS ${INDEX}\"}},"
- done
- for TABLE in $TABLES; do
- echo "[entrypoint] Dropping table: $TABLE"
- STMTS="${STMTS}{\"type\":\"execute\",\"stmt\":{\"sql\":\"DROP TABLE IF EXISTS ${TABLE}\"}},"
- done
- if [ -n "$STMTS" ]; then
- STMTS="${STMTS%,}"
- curl -s "${TURSO_URL}/v2/pipeline" \
- -H "Authorization: Bearer ${TURSO_TOKEN}" \
- -H "Content-Type: application/json" \
- -d "{\"requests\":[${STMTS},{\"type\":\"close\"}]}" > /dev/null
- echo "[entrypoint] All indexes and tables dropped"
- else
- echo "[entrypoint] Nothing to drop"
- fi
- fi
-fi
-
-echo "[entrypoint] Starting shrine server..."
./shrine &
SHRINE_PID=$!
-if [ "$SEED" = "true" ]; then
- echo "[entrypoint] Waiting for server on port ${PORT:-3000}..."
- RETRIES=0
- MAX_RETRIES=30
- until bash -c "echo > /dev/tcp/localhost/${PORT:-3000}" 2>/dev/null; do
- RETRIES=$((RETRIES + 1))
- if [ "$RETRIES" -ge "$MAX_RETRIES" ]; then
- echo "[entrypoint] Server failed to start after ${MAX_RETRIES}s"
- exit 1
- fi
- echo "[entrypoint] Waiting... ($RETRIES/$MAX_RETRIES)"
- sleep 1
- done
- echo "[entrypoint] Server is up, running seed script..."
- bash scripts/seed.sh
- echo "[entrypoint] Seed complete"
-else
- echo "[entrypoint] SEED not set, skipping seed"
-fi
+RETRIES=0
+MAX_RETRIES=30
+until bash -c "echo > /dev/tcp/localhost/${PORT:-3000}" 2>/dev/null; do
+ RETRIES=$((RETRIES + 1))
+ if [ "$RETRIES" -ge "$MAX_RETRIES" ]; then
+ echo "[entrypoint] Server failed to start after ${MAX_RETRIES}s"
+ exit 1
+ fi
+ sleep 1
+done
+
+bash scripts/seed.sh
wait $SHRINE_PID \ No newline at end of file
diff --git a/scripts/seed.sh b/scripts/seed.sh
index 0dcd042..488ac90 100755
--- a/scripts/seed.sh
+++ b/scripts/seed.sh
@@ -2,87 +2,16 @@
set -euo pipefail
SEED_DIR="seed"
-DB_DRIVER="${DB_DRIVER:-sqlite}"
-DSN="${DSN:-shrine/pagoda.db}"
-
-if [ "$DB_DRIVER" = "libsql" ]; then
- TURSO_URL=$(echo "$DSN" | sed 's|^libsql://|https://|; s|?.*||')
- TURSO_TOKEN=$(echo "$DSN" | sed -n 's/.*authToken=\(.*\)/\1/p')
-fi
+DSN="${DSN:-pagoda.db}"
exec_sql_file() {
- if [ "$DB_DRIVER" = "sqlite" ]; then
- sqlite3 "$DSN" < "$1"
- elif [ "$DB_DRIVER" = "libsql" ]; then
- local BATCH_SIZE=10
- local STMTS=""
- local COUNT=0
- local BATCH_NUM=0
- while IFS= read -r line; do
- line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
- [ -z "$line" ] && continue
- [ "$line" = "BEGIN TRANSACTION;" ] && continue
- [ "$line" = "COMMIT;" ] && continue
- local ESCAPED
- ESCAPED=$(printf '%s' "$line" | sed 's/\\/\\\\/g; s/"/\\"/g')
- STMTS="${STMTS}{\"type\":\"execute\",\"stmt\":{\"sql\":\"${ESCAPED}\"}},"
- COUNT=$((COUNT + 1))
- if [ "$COUNT" -ge "$BATCH_SIZE" ]; then
- BATCH_NUM=$((BATCH_NUM + 1))
- STMTS="${STMTS%,}"
- echo " Sending batch $BATCH_NUM ($BATCH_SIZE statements)..."
- RESULT=$(curl -s -w "\n%{http_code}" "${TURSO_URL}/v2/pipeline" \
- -H "Authorization: Bearer ${TURSO_TOKEN}" \
- -H "Content-Type: application/json" \
- -d "{\"requests\":[${STMTS},{\"type\":\"close\"}]}")
- HTTP_CODE=$(echo "$RESULT" | tail -1)
- if [ "$HTTP_CODE" != "200" ]; then
- echo " Turso batch $BATCH_NUM failed with HTTP $HTTP_CODE"
- echo "$RESULT" | sed '$d' | head -5
- exit 1
- fi
- echo " Batch $BATCH_NUM OK"
- STMTS=""
- COUNT=0
- fi
- done < "$1"
- if [ "$COUNT" -gt 0 ]; then
- BATCH_NUM=$((BATCH_NUM + 1))
- STMTS="${STMTS%,}"
- echo " Sending final batch $BATCH_NUM ($COUNT statements)..."
- RESULT=$(curl -s -w "\n%{http_code}" "${TURSO_URL}/v2/pipeline" \
- -H "Authorization: Bearer ${TURSO_TOKEN}" \
- -H "Content-Type: application/json" \
- -d "{\"requests\":[${STMTS},{\"type\":\"close\"}]}")
- HTTP_CODE=$(echo "$RESULT" | tail -1)
- if [ "$HTTP_CODE" != "200" ]; then
- echo " Turso final batch failed with HTTP $HTTP_CODE"
- echo "$RESULT" | sed '$d' | head -5
- exit 1
- fi
- echo " Batch $BATCH_NUM OK"
- fi
- echo " All $BATCH_NUM batches sent successfully"
- fi
+ sqlite3 "$DSN" < "$1"
}
query_sql() {
- if [ "$DB_DRIVER" = "sqlite" ]; then
- sqlite3 "$DSN" "$1"
- elif [ "$DB_DRIVER" = "libsql" ]; then
- curl -sf "${TURSO_URL}/v2/pipeline" \
- -H "Authorization: Bearer ${TURSO_TOKEN}" \
- -H "Content-Type: application/json" \
- -d "{\"requests\":[{\"type\":\"execute\",\"stmt\":{\"sql\":\"$1\"}},{\"type\":\"close\"}]}" \
- | sed -n 's/.*"value":"\([^"]*\)".*/\1/p' | head -1
- fi
+ sqlite3 "$DSN" "$1"
}
-if [ "$DB_DRIVER" = "sqlite" ] && [ ! -f "$DSN" ]; then
- echo "Database not found at $DSN"
- exit 1
-fi
-
EXISTING=$(query_sql "SELECT COUNT(*) FROM users;")
if [ -n "$EXISTING" ] && [ "$EXISTING" -gt 0 ] 2>/dev/null; then
echo "Database already has $EXISTING users, skipping seed"
@@ -226,19 +155,8 @@ echo "BEGIN TRANSACTION;" > "$SQL_FILE"
OWNER_BIO_ESC=$(escape_sql "$OWNER_BIO")
OWNER_SIG_ESC=$(escape_sql "$OWNER_SIG")
-cat >> "$SQL_FILE" << OWNERSQL
-INSERT OR IGNORE INTO users (
- username, email, password_hash, display_name, role, email_verified,
- jade, honor, pronouns, location, bio, signature, birthday, last_seen_at,
- ip, created_at, updated_at
-) VALUES (
- 'master', '[email protected]', '${HASH}', 'Master', 'owner', 1,
- 1000, 500, 'sol/solis', 'The Cloud',
- '${OWNER_BIO_ESC}', '${OWNER_SIG_ESC}',
- '1904-03-15T00:00:00Z', '${OWNER_SEEN}',
- '127.0.0.1', '${OWNER_DATE}', '${OWNER_DATE}'
-);
-OWNERSQL
+printf "INSERT OR IGNORE INTO users (username, email, password_hash, display_name, role, email_verified, jade, honor, pronouns, location, bio, signature, birthday, last_seen_at, ip, created_at, updated_at) VALUES ('master', '[email protected]', '%s', 'Master', 'owner', 1, 1000, 500, 'sol/solis', 'The Cloud', '%s', '%s', '1904-03-15T00:00:00Z', '%s', '127.0.0.1', '%s', '%s');\n" \
+ "$HASH" "$OWNER_BIO_ESC" "$OWNER_SIG_ESC" "$OWNER_SEEN" "$OWNER_DATE" "$OWNER_DATE" >> "$SQL_FILE"
echo "Generating $CITIZEN_COUNT citizens..."
@@ -347,7 +265,7 @@ done
echo "COMMIT;" >> "$SQL_FILE"
-echo "Inserting into database ($DB_DRIVER)..."
+echo "Inserting into database..."
exec_sql_file "$SQL_FILE"
TOTAL=$(query_sql "SELECT COUNT(*) FROM users;")
diff --git a/shrine/config/functions.go b/shrine/config/functions.go
index d9fd5e4..ba55c75 100644
--- a/shrine/config/functions.go
+++ b/shrine/config/functions.go
@@ -24,7 +24,7 @@ func verifyConfig() error {
func verifyDatabaseDriver(driver enums.DatabaseDriver) bool {
switch driver {
- case enums.SQLite, enums.Postgres, enums.LibSQL:
+ case enums.SQLite, enums.Postgres:
return true
default:
return false
diff --git a/shrine/database/database.go b/shrine/database/database.go
index fed6232..0defd36 100644
--- a/shrine/database/database.go
+++ b/shrine/database/database.go
@@ -3,13 +3,9 @@ package database
import (
"shrine/config"
"shrine/enums"
- "shrine/messages"
"shrine/utils/logger"
"time"
- "database/sql"
-
- _ "github.com/tursodatabase/libsql-client-go/libsql"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
@@ -32,12 +28,6 @@ func init() {
dialector = sqlite.Open(config.Database.DSN)
case enums.Postgres:
dialector = postgres.Open(config.Database.DSN)
- case enums.LibSQL:
- db, err := sql.Open("libsql", config.Database.DSN)
- if err != nil {
- logger.Fatalf("Database", messages.FailedLibSQLConnection, err)
- }
- dialector = sqlite.Dialector{Conn: db}
default:
logger.Fatalf("Database", "Invalid database driver: %s", config.Database.Driver)
}
diff --git a/shrine/enums/database.go b/shrine/enums/database.go
index bd43b7c..d57ef13 100644
--- a/shrine/enums/database.go
+++ b/shrine/enums/database.go
@@ -5,5 +5,4 @@ type DatabaseDriver string
const (
SQLite DatabaseDriver = "sqlite"
Postgres DatabaseDriver = "postgres"
- LibSQL DatabaseDriver = "libsql"
)
diff --git a/shrine/go.mod b/shrine/go.mod
index a8bad64..89dec4d 100644
--- a/shrine/go.mod
+++ b/shrine/go.mod
@@ -3,13 +3,16 @@ module shrine
go 1.25.5
require (
+ github.com/chromedp/chromedp v0.14.2
github.com/flosch/pongo2/v6 v6.0.0
github.com/gofiber/fiber/v2 v2.52.12
github.com/joho/godotenv v1.5.1
github.com/microcosm-cc/bluemonday v1.0.27
github.com/minio/minio-go/v7 v7.0.98
+ github.com/robfig/cron/v3 v3.0.1
go.uber.org/zap v1.27.1
golang.org/x/crypto v0.46.0
+ golang.org/x/image v0.36.0
gorm.io/driver/postgres v1.6.0
gorm.io/driver/sqlite v1.6.0
gorm.io/gorm v1.31.1
@@ -17,12 +20,9 @@ require (
require (
github.com/andybalholm/brotli v1.1.0 // indirect
- github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/chromedp/cdproto v0.0.0-20250724212937-08a3db8b4327 // indirect
- github.com/chromedp/chromedp v0.14.2 // indirect
github.com/chromedp/sysutil v1.1.0 // indirect
- github.com/coder/websocket v1.8.12 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/go-ini/ini v1.67.0 // indirect
github.com/go-json-experiment/json v0.0.0-20250725192818-e39067aee2d2 // indirect
@@ -48,18 +48,14 @@ require (
github.com/minio/md5-simd v1.1.2 // indirect
github.com/philhofer/fwd v1.2.0 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
- github.com/robfig/cron/v3 v3.0.1 // indirect
github.com/rogpeppe/go-internal v1.14.1 // indirect
github.com/rs/xid v1.6.0 // indirect
github.com/tinylib/msgp v1.6.1 // indirect
- github.com/tursodatabase/libsql-client-go v0.0.0-20251219100830-236aa1ff8acc // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasthttp v1.51.0 // indirect
github.com/valyala/tcplisten v1.0.0 // indirect
go.uber.org/multierr v1.10.0 // indirect
go.yaml.in/yaml/v3 v3.0.4 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- golang.org/x/image v0.36.0 // indirect
golang.org/x/net v0.48.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.39.0 // indirect
diff --git a/shrine/go.sum b/shrine/go.sum
index 518450b..b0b3e30 100644
--- a/shrine/go.sum
+++ b/shrine/go.sum
@@ -1,7 +1,5 @@
github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
-github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
-github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/chromedp/cdproto v0.0.0-20250724212937-08a3db8b4327 h1:UQ4AU+BGti3Sy/aLU8KVseYKNALcX9UXY6DfpwQ6J8E=
@@ -10,8 +8,6 @@ github.com/chromedp/chromedp v0.14.2 h1:r3b/WtwM50RsBZHMUm9fsNhhzRStTHrKdr2zmwbZ
github.com/chromedp/chromedp v0.14.2/go.mod h1:rHzAv60xDE7VNy/MYtTUrYreSc0ujt2O1/C3bzctYBo=
github.com/chromedp/sysutil v1.1.0 h1:PUFNv5EcprjqXZD9nJb9b/c9ibAbxiYo4exNWZyipwM=
github.com/chromedp/sysutil v1.1.0/go.mod h1:WiThHUdltqCNKGc4gaU50XgYjwjYIhKWoHGPTUfWTJ8=
-github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo=
-github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -60,6 +56,8 @@ github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo=
+github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
@@ -77,6 +75,8 @@ github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.98 h1:MeAVKjLVz+XJ28zFcuYyImNSAh8Mq725uNW4beRisi0=
github.com/minio/minio-go/v7 v7.0.98/go.mod h1:cY0Y+W7yozf0mdIclrttzo1Iiu7mEf9y7nk2uXqMOvM=
+github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhAVbbWWBzr41ElhJx5tXPWkIHA2HWPRuw=
+github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=
github.com/philhofer/fwd v1.2.0 h1:e6DnBTl7vGY+Gz322/ASL4Gyp1FspeMvx1RNDoToZuM=
github.com/philhofer/fwd v1.2.0/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -96,8 +96,6 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/tinylib/msgp v1.6.1 h1:ESRv8eL3u+DNHUoSAAQRE50Hm162zqAnBoGv9PzScPY=
github.com/tinylib/msgp v1.6.1/go.mod h1:RSp0LW9oSxFut3KzESt5Voq4GVWyS+PSulT77roAqEA=
-github.com/tursodatabase/libsql-client-go v0.0.0-20251219100830-236aa1ff8acc h1:lzi/5fg2EfinRlh3v//YyIhnc4tY7BTqazQGwb1ar+0=
-github.com/tursodatabase/libsql-client-go v0.0.0-20251219100830-236aa1ff8acc/go.mod h1:08inkKyguB6CGGssc/JzhmQWwBgFQBgjlYFjxjRh7nU=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA=
@@ -114,8 +112,6 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
-golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
golang.org/x/image v0.36.0 h1:Iknbfm1afbgtwPTmHnS2gTM/6PPZfH+z2EFuOkSbqwc=
golang.org/x/image v0.36.0/go.mod h1:YsWD2TyyGKiIX1kZlu9QfKIsQ4nAAK9bdgdrIsE7xy4=
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
@@ -126,8 +122,6 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
-golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
-golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/shrine/messages/system.go b/shrine/messages/system.go
index 5275e99..e6fe442 100644
--- a/shrine/messages/system.go
+++ b/shrine/messages/system.go
@@ -10,5 +10,4 @@ const (
CannotActionSelf = "You cannot %s yourself."
CannotActionOwner = "You cannot %s the owner."
OnlyOwnerCanActionAdmin = "Only the owner can %s an administrator."
- FailedLibSQLConnection = "Failed to open libsql connection: %v."
) \ No newline at end of file