Skip to content

Commit e719a7f

Browse files
committed
token service own db
1 parent 337fda5 commit e719a7f

File tree

15 files changed

+576
-105
lines changed

15 files changed

+576
-105
lines changed

taco/Dockerfile_token_service

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,46 @@ FROM ubuntu:24.04 AS runner
2323
ARG COMMIT_SHA
2424
WORKDIR /app
2525

26-
# Install ca-certificates for HTTPS requests
26+
# Install ca-certificates, curl, jq for HTTPS requests and URL encoding
2727
RUN apt-get update && \
28-
apt-get install -y ca-certificates curl && \
28+
apt-get install -y ca-certificates curl jq && \
2929
apt-get clean && \
3030
rm -rf /var/lib/apt/lists/*
3131

3232
RUN echo "commit sha: ${COMMIT_SHA}"
3333

34+
# Install Atlas CLI for migrations
35+
RUN curl -sSf https://atlasgo.sh | sh
36+
3437
# Copy the binary from builder stage
3538
COPY --from=builder /go/src/github.com/diggerhq/digger/taco/cmd/token_service/token_service /app/token_service
3639

37-
# Make the binary executable
38-
RUN chmod +x /app/token_service
40+
# Copy migration files for token service
41+
COPY --from=builder /go/src/github.com/diggerhq/digger/taco/cmd/token_service/migrations /app/migrations
3942

40-
# Expose the port that token service runs on
41-
EXPOSE 8081
43+
# Copy entrypoint script for token service
44+
COPY cmd/token_service/scripts/entrypoint.sh /app/entrypoint.sh
4245

43-
# Set environment variables with defaults
44-
ENV OPENTACO_PORT=8081
45-
ENV OPENTACO_QUERY_BACKEND=sqlite
46-
ENV OPENTACO_SQLITE_DB_PATH=/app/data/tokens.db
46+
# Copy atlas.hcl for reference (token service specific)
47+
COPY --from=builder /go/src/github.com/diggerhq/digger/taco/cmd/token_service/atlas.hcl /app/atlas.hcl
48+
49+
# Make scripts executable
50+
RUN chmod +x /app/token_service /app/entrypoint.sh
4751

4852
# Create data directory
4953
RUN mkdir -p /app/data
5054

55+
# Expose the port that token service runs on
56+
EXPOSE 8081
57+
58+
# Set environment variables with defaults
59+
ENV OPENTACO_TOKEN_QUERY_BACKEND=sqlite
60+
ENV OPENTACO_TOKEN_SQLITE_DB_PATH=/app/data/token_service.db
61+
5162
# Health check
5263
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
5364
CMD curl -f http://localhost:8081/healthz || exit 1
5465

55-
# Run the token service binary
56-
ENTRYPOINT ["/app/token_service"]
66+
# Run via entrypoint script (applies migrations then starts token service)
67+
ENTRYPOINT ["/bin/bash", "/app/entrypoint.sh"]
5768

taco/cmd/token_service/atlas.hcl

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
variable "DB_URL" {
2+
type = string
3+
default = "postgres://postgres:postgres@localhost:5432/token_service?sslmode=disable"
4+
}
5+
6+
variable "POSTGRES_MIGRATIONS_DIR" {
7+
type = string
8+
default = "file://migrations/postgres"
9+
}
10+
11+
variable "MYSQL_MIGRATIONS_DIR" {
12+
type = string
13+
default = "file://migrations/mysql"
14+
}
15+
16+
variable "SQLITE_MIGRATIONS_DIR" {
17+
type = string
18+
default = "file://migrations/sqlite"
19+
}
20+
21+
data "external_schema" "gorm_postgres" {
22+
program = [
23+
"sh",
24+
"-c",
25+
"cd query && go run ./atlas_loader.go postgres",
26+
]
27+
}
28+
29+
env "postgres" {
30+
src = data.external_schema.gorm_postgres.url
31+
url = var.DB_URL
32+
33+
dev = "docker://postgres/16?timeout=5m"
34+
35+
schemas = ["public"]
36+
37+
migration {
38+
dir = var.POSTGRES_MIGRATIONS_DIR
39+
format = "atlas"
40+
}
41+
42+
lint {
43+
destructive { error = true }
44+
}
45+
46+
format {
47+
migrate {
48+
diff = "{{ sql . \" \" }}"
49+
}
50+
}
51+
}
52+
53+
# MySQL configuration
54+
data "external_schema" "gorm_mysql" {
55+
program = [
56+
"sh",
57+
"-c",
58+
"cd query && go run ./atlas_loader.go mysql",
59+
]
60+
}
61+
62+
env "mysql" {
63+
src = data.external_schema.gorm_mysql.url
64+
65+
dev = "docker://mysql/8/token_service?timeout=5m"
66+
67+
migration {
68+
dir = var.MYSQL_MIGRATIONS_DIR
69+
format = "atlas"
70+
}
71+
72+
lint {
73+
destructive { error = true }
74+
}
75+
76+
format {
77+
migrate {
78+
diff = "{{ sql . \" \" }}"
79+
}
80+
}
81+
}
82+
83+
# SQLite configuration
84+
data "external_schema" "gorm_sqlite" {
85+
program = [
86+
"sh",
87+
"-c",
88+
"cd query && go run ./atlas_loader.go sqlite",
89+
]
90+
}
91+
92+
env "sqlite" {
93+
src = data.external_schema.gorm_sqlite.url
94+
95+
# SQLite uses in-memory dev database, no Docker needed
96+
dev = "sqlite://file?mode=memory"
97+
98+
migration {
99+
dir = var.SQLITE_MIGRATIONS_DIR
100+
format = "atlas"
101+
}
102+
103+
lint {
104+
destructive { error = true }
105+
}
106+
107+
format {
108+
migrate {
109+
diff = "{{ sql . \" \" }}"
110+
}
111+
}
112+
}
113+

taco/cmd/token_service/go.mod

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,21 @@ replace github.com/diggerhq/digger/opentaco/internal => ../../internal
66

77
require (
88
github.com/diggerhq/digger/opentaco/internal v0.0.0-00010101000000-000000000000
9+
github.com/google/uuid v1.6.0
910
github.com/kelseyhightower/envconfig v1.4.0
1011
github.com/labstack/echo/v4 v4.13.3
12+
gorm.io/driver/mysql v1.6.0
13+
gorm.io/driver/postgres v1.6.0
14+
gorm.io/driver/sqlite v1.6.0
15+
gorm.io/driver/sqlserver v1.6.1
16+
gorm.io/gorm v1.31.0
1117
)
1218

1319
require (
1420
filippo.io/edwards25519 v1.1.0 // indirect
15-
github.com/aws/aws-sdk-go-v2 v1.38.1 // indirect
16-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0 // indirect
17-
github.com/aws/aws-sdk-go-v2/config v1.31.2 // indirect
18-
github.com/aws/aws-sdk-go-v2/credentials v1.18.6 // indirect
19-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 // indirect
20-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 // indirect
21-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 // indirect
22-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
23-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.4 // indirect
24-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect
25-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.4 // indirect
26-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 // indirect
27-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.4 // indirect
28-
github.com/aws/aws-sdk-go-v2/service/s3 v1.87.1 // indirect
29-
github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 // indirect
30-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2 // indirect
31-
github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 // indirect
32-
github.com/aws/smithy-go v1.22.5 // indirect
33-
github.com/coreos/go-oidc/v3 v3.11.0 // indirect
34-
github.com/go-jose/go-jose/v4 v4.1.2 // indirect
3521
github.com/go-sql-driver/mysql v1.8.1 // indirect
36-
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
3722
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
3823
github.com/golang-sql/sqlexp v0.1.0 // indirect
39-
github.com/google/uuid v1.6.0 // indirect
4024
github.com/jackc/pgpassfile v1.0.0 // indirect
4125
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
4226
github.com/jackc/pgx/v5 v5.6.0 // indirect
@@ -48,19 +32,12 @@ require (
4832
github.com/mattn/go-isatty v0.0.20 // indirect
4933
github.com/mattn/go-sqlite3 v1.14.28 // indirect
5034
github.com/microsoft/go-mssqldb v1.8.2 // indirect
51-
github.com/mr-tron/base58 v1.2.0 // indirect
5235
github.com/valyala/bytebufferpool v1.0.0 // indirect
5336
github.com/valyala/fasttemplate v1.2.2 // indirect
5437
golang.org/x/crypto v0.41.0 // indirect
5538
golang.org/x/net v0.43.0 // indirect
56-
golang.org/x/oauth2 v0.30.0 // indirect
5739
golang.org/x/sync v0.16.0 // indirect
5840
golang.org/x/sys v0.35.0 // indirect
5941
golang.org/x/text v0.28.0 // indirect
6042
golang.org/x/time v0.8.0 // indirect
61-
gorm.io/driver/mysql v1.6.0 // indirect
62-
gorm.io/driver/postgres v1.6.0 // indirect
63-
gorm.io/driver/sqlite v1.6.0 // indirect
64-
gorm.io/driver/sqlserver v1.6.1 // indirect
65-
gorm.io/gorm v1.31.0 // indirect
6643
)

taco/cmd/token_service/go.sum

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -21,53 +21,13 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83
2121
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
2222
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ=
2323
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
24-
github.com/aws/aws-sdk-go-v2 v1.38.1 h1:j7sc33amE74Rz0M/PoCpsZQ6OunLqys/m5antM0J+Z8=
25-
github.com/aws/aws-sdk-go-v2 v1.38.1/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg=
26-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0 h1:6GMWV6CNpA/6fbFHnoAjrv4+LGfyTqZz2LtCHnspgDg=
27-
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.0/go.mod h1:/mXlTIVG9jbxkqDnr5UQNQxW1HRYxeGklkM9vAFeabg=
28-
github.com/aws/aws-sdk-go-v2/config v1.31.2 h1:NOaSZpVGEH2Np/c1toSeW0jooNl+9ALmsUTZ8YvkJR0=
29-
github.com/aws/aws-sdk-go-v2/config v1.31.2/go.mod h1:17ft42Yb2lF6OigqSYiDAiUcX4RIkEMY6XxEMJsrAes=
30-
github.com/aws/aws-sdk-go-v2/credentials v1.18.6 h1:AmmvNEYrru7sYNJnp3pf57lGbiarX4T9qU/6AZ9SucU=
31-
github.com/aws/aws-sdk-go-v2/credentials v1.18.6/go.mod h1:/jdQkh1iVPa01xndfECInp1v1Wnp70v3K4MvtlLGVEc=
32-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 h1:lpdMwTzmuDLkgW7086jE94HweHCqG+uOJwHf3LZs7T0=
33-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4/go.mod h1:9xzb8/SV62W6gHQGC/8rrvgNXU6ZoYM3sAIJCIrXJxY=
34-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 h1:IdCLsiiIj5YJ3AFevsewURCPV+YWUlOW8JiPhoAy8vg=
35-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4/go.mod h1:l4bdfCD7XyyZA9BolKBo1eLqgaJxl0/x91PL4Yqe0ao=
36-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 h1:j7vjtr1YIssWQOMeOWRbh3z8g2oY/xPjnZH2gLY4sGw=
37-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4/go.mod h1:yDmJgqOiH4EA8Hndnv4KwAo8jCGTSnM5ASG1nBI+toA=
38-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
39-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
40-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.4 h1:BE/MNQ86yzTINrfxPPFS86QCBNQeLKY2A0KhDh47+wI=
41-
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.4/go.mod h1:SPBBhkJxjcrzJBc+qY85e83MQ2q3qdra8fghhkkyrJg=
42-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM=
43-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44=
44-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.4 h1:Beh9oVgtQnBgR4sKKzkUBRQpf1GnL4wt0l4s8h2VCJ0=
45-
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.4/go.mod h1:b17At0o8inygF+c6FOD3rNyYZufPw62o9XJbSfQPgbo=
46-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 h1:ueB2Te0NacDMnaC+68za9jLwkjzxGWm0KB5HTUHjLTI=
47-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4/go.mod h1:nLEfLnVMmLvyIG58/6gsSA03F1voKGaCfHV7+lR8S7s=
48-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.4 h1:HVSeukL40rHclNcUqVcBwE1YoZhOkoLeBfhUqR3tjIU=
49-
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.4/go.mod h1:DnbBOv4FlIXHj2/xmrUQYtawRFC9L9ZmQPz+DBc6X5I=
50-
github.com/aws/aws-sdk-go-v2/service/s3 v1.87.1 h1:2n6Pd67eJwAb/5KCX62/8RTU0aFAAW7V5XIGSghiHrw=
51-
github.com/aws/aws-sdk-go-v2/service/s3 v1.87.1/go.mod h1:w5PC+6GHLkvMJKasYGVloB3TduOtROEMqm15HSuIbw4=
52-
github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 h1:ve9dYBB8CfJGTFqcQ3ZLAAb/KXWgYlgu/2R2TZL2Ko0=
53-
github.com/aws/aws-sdk-go-v2/service/sso v1.28.2/go.mod h1:n9bTZFZcBa9hGGqVz3i/a6+NG0zmZgtkB9qVVFDqPA8=
54-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2 h1:pd9G9HQaM6UZAZh19pYOkpKSQkyQQ9ftnl/LttQOcGI=
55-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2/go.mod h1:eknndR9rU8UpE/OmFpqU78V1EcXPKFTTm5l/buZYgvM=
56-
github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 h1:iV1Ko4Em/lkJIsoKyGfc0nQySi+v0Udxr6Igq+y9JZc=
57-
github.com/aws/aws-sdk-go-v2/service/sts v1.38.0/go.mod h1:bEPcjW7IbolPfK67G1nilqWyoxYMSPrDiIQ3RdIdKgo=
58-
github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw=
59-
github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
60-
github.com/coreos/go-oidc/v3 v3.11.0 h1:Ia3MxdwpSw702YW0xgfmP1GVCMA9aEFWu12XUZ3/OtI=
61-
github.com/coreos/go-oidc/v3 v3.11.0/go.mod h1:gE3LgjOgFoHi9a4ce4/tJczr0Ai2/BoDhf0r5lltWI0=
6224
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
6325
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6426
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6527
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
6628
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6729
github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko=
6830
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
69-
github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI=
70-
github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo=
7131
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
7232
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
7333
github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
@@ -129,8 +89,6 @@ github.com/microsoft/go-mssqldb v1.8.2 h1:236sewazvC8FvG6Dr3bszrVhMkAl4KYImryLkR
12989
github.com/microsoft/go-mssqldb v1.8.2/go.mod h1:vp38dT33FGfVotRiTmDo3bFyaHq+p3LektQrjTULowo=
13090
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
13191
github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
132-
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
133-
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
13492
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
13593
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
13694
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
@@ -198,8 +156,6 @@ golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
198156
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
199157
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
200158
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
201-
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
202-
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
203159
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
204160
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
205161
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

taco/cmd/token_service/main.go

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,51 @@ import (
1010
"os/signal"
1111
"time"
1212

13-
"github.com/diggerhq/digger/opentaco/internal/query"
14-
"github.com/diggerhq/digger/opentaco/internal/queryfactory"
15-
"github.com/diggerhq/digger/opentaco/internal/repositories"
13+
"github.com/diggerhq/digger/opentaco/cmd/token_service/query"
14+
querytypes "github.com/diggerhq/digger/opentaco/cmd/token_service/query/types"
1615
"github.com/diggerhq/digger/opentaco/internal/token_service"
1716
"github.com/kelseyhightower/envconfig"
1817
"github.com/labstack/echo/v4"
1918
echomiddleware "github.com/labstack/echo/v4/middleware"
2019
)
2120

22-
// change this random number to bump version of token service: 1
21+
// change this random number to bump version of token service: 2
2322
func main() {
2423
var (
2524
port = flag.String("port", "8081", "Server port")
2625
)
2726
flag.Parse()
2827

29-
// Load configuration from environment variables into our struct.
30-
var queryCfg query.Config
31-
err := envconfig.Process("opentaco", &queryCfg) // The prefix "OPENTACO" will be used for all vars.
28+
// Load configuration from environment variables with "opentaco_token" prefix
29+
var dbCfg query.Config
30+
err := envconfig.Process("opentaco_token", &dbCfg)
3231
if err != nil {
33-
log.Fatalf("Failed to process configuration: %v", err)
32+
log.Fatalf("Failed to process token service database configuration: %v", err)
3433
}
3534

36-
// --- Initialize Stores ---
35+
// --- Initialize Token Service Database ---
3736

38-
// Create the database query store using the dedicated factory.
39-
queryStore, err := queryfactory.NewQueryStore(queryCfg)
37+
// Create the database connection for token service
38+
db, err := query.NewDB(dbCfg)
4039
if err != nil {
41-
log.Fatalf("Failed to initialize query backend: %v", err)
40+
log.Fatalf("Failed to initialize token service database: %v", err)
4241
}
43-
defer queryStore.Close()
4442

45-
log.Printf("Query backend initialized: %s", queryCfg.Backend)
43+
sqlDB, err := db.DB()
44+
if err != nil {
45+
log.Fatalf("Failed to get underlying sql.DB: %v", err)
46+
}
47+
defer sqlDB.Close()
48+
49+
log.Printf("Token service database initialized: %s", dbCfg.Backend)
4650

47-
// Get the underlying *gorm.DB from the query store
48-
db := repositories.GetDBFromQueryStore(queryStore)
49-
if db == nil {
50-
log.Fatalf("Query store does not provide GetDB method")
51+
// Auto-migrate token models (ensures schema exists)
52+
// Note: In Docker, migrations are applied via Atlas in entrypoint.sh
53+
// This AutoMigrate is primarily for local development convenience
54+
if err := db.AutoMigrate(querytypes.TokenModels...); err != nil {
55+
log.Fatalf("Failed to auto-migrate token models: %v", err)
5156
}
57+
log.Println("Token service database schema verified")
5258

5359
// Create token repository
5460
tokenRepo := token_service.NewTokenRepository(db)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- Create "tokens" table
2+
CREATE TABLE `tokens` (
3+
`id` varchar(36) NOT NULL,
4+
`user_id` varchar(255) NOT NULL,
5+
`org_id` varchar(255) NOT NULL,
6+
`token` varchar(255) NOT NULL,
7+
`name` varchar(255) NULL,
8+
`status` varchar(20) NULL DEFAULT "active",
9+
`created_at` datetime NULL,
10+
`updated_at` datetime NULL,
11+
`last_used_at` datetime NULL,
12+
`expires_at` datetime NULL,
13+
PRIMARY KEY (`id`),
14+
INDEX `idx_tokens_org_id` (`org_id`),
15+
UNIQUE INDEX `idx_tokens_token` (`token`),
16+
INDEX `idx_tokens_user_id` (`user_id`)
17+
) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

0 commit comments

Comments
 (0)