Skip to content

Commit bbddf48

Browse files
authored
feat: add support for libsql / Turso database (#421)
1 parent bd343f0 commit bbddf48

File tree

4 files changed

+159
-1569
lines changed

4 files changed

+159
-1569
lines changed

server/constants/db_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ const (
55
DbTypePostgres = "postgres"
66
// DbTypeSqlite is the sqlite database type
77
DbTypeSqlite = "sqlite"
8+
// DbTypeLibSQL is the libsql / Turso database type
9+
DbTypeLibSQL = "libsql"
810
// DbTypeMysql is the mysql database type
911
DbTypeMysql = "mysql"
1012
// DbTypeSqlserver is the sqlserver database type

server/db/providers/sql/provider.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/authorizerdev/authorizer/server/constants"
77
"github.com/authorizerdev/authorizer/server/db/models"
88
"github.com/authorizerdev/authorizer/server/memorystore"
9+
libsql "github.com/ekristen/gorm-libsql"
910
"github.com/glebarez/sqlite"
1011
"github.com/sirupsen/logrus"
1112
"gorm.io/driver/mysql"
@@ -60,6 +61,8 @@ func NewProvider() (*provider, error) {
6061
sqlDB, err = gorm.Open(postgres.Open(dbURL), ormConfig)
6162
case constants.DbTypeSqlite:
6263
sqlDB, err = gorm.Open(sqlite.Open(dbURL+"?_pragma=busy_timeout(5000)&_pragma=journal_mode(WAL)"), ormConfig)
64+
case constants.DbTypeLibSQL:
65+
sqlDB, err = gorm.Open(libsql.Open(dbURL), ormConfig)
6366
case constants.DbTypeMysql, constants.DbTypeMariaDB, constants.DbTypePlanetScaleDB:
6467
sqlDB, err = gorm.Open(mysql.Open(dbURL), ormConfig)
6568
case constants.DbTypeSqlserver:

server/go.mod

Lines changed: 92 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,126 @@
11
module github.com/authorizerdev/authorizer/server
22

3-
go 1.16
3+
go 1.21
4+
5+
toolchain go1.21.4
46

57
require (
68
github.com/99designs/gqlgen v0.17.39
79
github.com/arangodb/go-driver v1.6.0
810
github.com/aws/aws-sdk-go v1.47.4
9-
github.com/bytedance/sonic v1.10.2 // indirect
1011
github.com/coreos/go-oidc/v3 v3.6.0
1112
github.com/couchbase/gocb/v2 v2.6.4
12-
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
13-
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
13+
github.com/ekristen/gorm-libsql v0.0.0-20231101204708-6e113112bcc2
1414
github.com/gin-gonic/gin v1.9.1
15-
github.com/glebarez/sqlite v1.9.0
16-
github.com/go-playground/validator/v10 v10.15.5 // indirect
17-
github.com/go-sql-driver/mysql v1.7.1 // indirect
15+
github.com/glebarez/sqlite v1.10.0
1816
github.com/gocql/gocql v1.6.0
1917
github.com/gokyle/twofactor v1.0.1
2018
github.com/golang-jwt/jwt v3.2.2+incompatible
2119
github.com/google/uuid v1.3.1
2220
github.com/guregu/dynamo v1.20.2
23-
github.com/hashicorp/golang-lru v1.0.2 // indirect
24-
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
2521
github.com/joho/godotenv v1.5.1
26-
github.com/klauspost/compress v1.17.0 // indirect
27-
github.com/klauspost/cpuid/v2 v2.2.5 // indirect
28-
github.com/montanaflynn/stats v0.7.1 // indirect
29-
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
3022
github.com/pquerna/otp v1.4.0
3123
github.com/redis/go-redis/v9 v9.2.1
3224
github.com/robertkrimen/otto v0.2.1
3325
github.com/sirupsen/logrus v1.9.3
34-
github.com/sosodev/duration v1.2.0 // indirect
3526
github.com/stretchr/testify v1.8.4
3627
github.com/tuotoo/qrcode v0.0.0-20220425170535-52ccc2bebf5d
3728
github.com/twilio/twilio-go v1.14.1
38-
github.com/urfave/cli/v2 v2.25.7 // indirect
3929
github.com/vektah/gqlparser/v2 v2.5.10
40-
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
4130
go.mongodb.org/mongo-driver v1.12.1
42-
golang.org/x/arch v0.5.0 // indirect
4331
golang.org/x/crypto v0.14.0
4432
golang.org/x/oauth2 v0.13.0
45-
golang.org/x/tools v0.14.0 // indirect
4633
google.golang.org/appengine v1.6.8
47-
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
4834
gopkg.in/mail.v2 v2.3.1
4935
gopkg.in/square/go-jose.v2 v2.6.0
5036
gorm.io/driver/mysql v1.5.2
51-
gorm.io/driver/postgres v1.5.3
37+
gorm.io/driver/postgres v1.5.4
5238
gorm.io/driver/sqlserver v1.5.2
5339
gorm.io/gorm v1.25.5
54-
modernc.org/memory v1.7.2 // indirect
55-
modernc.org/sqlite v1.26.0 // indirect
40+
)
41+
42+
require (
43+
github.com/agnivade/levenshtein v1.1.1 // indirect
44+
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230512164433-5d1fd1a340c9 // indirect
45+
github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e // indirect
46+
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect
47+
github.com/bytedance/sonic v1.9.1 // indirect
48+
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
49+
github.com/cespare/xxhash/v2 v2.2.0 // indirect
50+
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
51+
github.com/couchbase/gocbcore/v10 v10.2.8 // indirect
52+
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
53+
github.com/davecgh/go-spew v1.1.1 // indirect
54+
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
55+
github.com/dustin/go-humanize v1.0.1 // indirect
56+
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
57+
github.com/gin-contrib/sse v0.1.0 // indirect
58+
github.com/glebarez/go-sqlite v1.21.2 // indirect
59+
github.com/go-jose/go-jose/v3 v3.0.0 // indirect
60+
github.com/go-playground/locales v0.14.1 // indirect
61+
github.com/go-playground/universal-translator v0.18.1 // indirect
62+
github.com/go-playground/validator/v10 v10.14.0 // indirect
63+
github.com/go-sql-driver/mysql v1.7.0 // indirect
64+
github.com/goccy/go-json v0.10.2 // indirect
65+
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
66+
github.com/golang-sql/sqlexp v0.1.0 // indirect
67+
github.com/golang/mock v1.6.0 // indirect
68+
github.com/golang/protobuf v1.5.3 // indirect
69+
github.com/golang/snappy v0.0.4 // indirect
70+
github.com/gorilla/websocket v1.5.0 // indirect
71+
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect
72+
github.com/hashicorp/golang-lru/v2 v2.0.3 // indirect
73+
github.com/jackc/pgpassfile v1.0.0 // indirect
74+
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
75+
github.com/jackc/pgx/v5 v5.4.3 // indirect
76+
github.com/jinzhu/inflection v1.0.0 // indirect
77+
github.com/jinzhu/now v1.1.5 // indirect
78+
github.com/jmespath/go-jmespath v0.4.0 // indirect
79+
github.com/json-iterator/go v1.1.12 // indirect
80+
github.com/klauspost/compress v1.15.15 // indirect
81+
github.com/klauspost/cpuid/v2 v2.2.4 // indirect
82+
github.com/leodido/go-urn v1.2.4 // indirect
83+
github.com/libsql/libsql-client-go v0.0.0-20231026052543-fce76c0f39a7 // indirect
84+
github.com/libsql/sqlite-antlr4-parser v0.0.0-20230802215326-5cb5bb604475 // indirect
85+
github.com/maruel/rs v1.1.0 // indirect
86+
github.com/mattn/go-isatty v0.0.19 // indirect
87+
github.com/microsoft/go-mssqldb v1.6.0 // indirect
88+
github.com/mitchellh/mapstructure v1.5.0 // indirect
89+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
90+
github.com/modern-go/reflect2 v1.0.2 // indirect
91+
github.com/montanaflynn/stats v0.7.0 // indirect
92+
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
93+
github.com/pkg/errors v0.9.1 // indirect
94+
github.com/pmezard/go-difflib v1.0.0 // indirect
95+
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
96+
github.com/rogpeppe/go-internal v1.11.0 // indirect
97+
github.com/russross/blackfriday/v2 v2.1.0 // indirect
98+
github.com/sosodev/duration v1.1.0 // indirect
99+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
100+
github.com/ugorji/go/codec v1.2.11 // indirect
101+
github.com/urfave/cli/v2 v2.25.5 // indirect
102+
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
103+
github.com/xdg-go/scram v1.1.2 // indirect
104+
github.com/xdg-go/stringprep v1.0.4 // indirect
105+
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
106+
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
107+
golang.org/x/arch v0.3.0 // indirect
108+
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
109+
golang.org/x/mod v0.10.0 // indirect
110+
golang.org/x/net v0.17.0 // indirect
111+
golang.org/x/sync v0.3.0 // indirect
112+
golang.org/x/sys v0.13.0 // indirect
113+
golang.org/x/text v0.13.0 // indirect
114+
golang.org/x/tools v0.9.3 // indirect
115+
google.golang.org/protobuf v1.31.0 // indirect
116+
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
117+
gopkg.in/inf.v0 v0.9.1 // indirect
118+
gopkg.in/sourcemap.v1 v1.0.5 // indirect
119+
gopkg.in/yaml.v3 v3.0.1 // indirect
120+
modernc.org/libc v1.22.5 // indirect
121+
modernc.org/mathutil v1.5.0 // indirect
122+
modernc.org/memory v1.5.0 // indirect
123+
modernc.org/sqlite v1.23.1 // indirect
124+
nhooyr.io/websocket v1.8.7 // indirect
125+
rsc.io/qr v0.2.0 // indirect
56126
)

0 commit comments

Comments
 (0)