diff options
| author | Bobby <[email protected]> | 2026-03-11 00:23:11 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-11 00:23:11 +0530 |
| commit | b023fc7c2c0024387a10ca32656b063e33db4c53 (patch) | |
| tree | 7757bb9adb306a069df8701f4fd1cbadbb55257a | |
| parent | 847ade6db1282d6342cd433e651ee6f50d6be866 (diff) | |
| download | pagoda-b023fc7c2c0024387a10ca32656b063e33db4c53.tar.xz pagoda-b023fc7c2c0024387a10ca32656b063e33db4c53.zip | |
refactor: remove libsql support and clean up database handling
| -rw-r--r-- | scripts/entrypoint.sh | 72 | ||||
| -rwxr-xr-x | scripts/seed.sh | 94 | ||||
| -rw-r--r-- | shrine/config/functions.go | 2 | ||||
| -rw-r--r-- | shrine/database/database.go | 10 | ||||
| -rw-r--r-- | shrine/enums/database.go | 1 | ||||
| -rw-r--r-- | shrine/go.mod | 10 | ||||
| -rw-r--r-- | shrine/go.sum | 14 | ||||
| -rw-r--r-- | shrine/messages/system.go | 1 |
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 |
