Skip to content

Commit 6b6140b

Browse files
committed
Update bdcache
1 parent 777b8ec commit 6b6140b

3 files changed

Lines changed: 50 additions & 16 deletions

File tree

go.mod

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,22 @@ module github.com/codeGROOVE-dev/prcost
33
go 1.25.4
44

55
require (
6-
github.com/codeGROOVE-dev/ds9 v0.7.1
6+
github.com/codeGROOVE-dev/bdcache v0.6.1
7+
github.com/codeGROOVE-dev/bdcache/persist/cloudrun v0.0.0-20251121210535-3893c2b92813
78
github.com/codeGROOVE-dev/gsm v0.0.0-20251019065141-833fe2363d22
8-
github.com/codeGROOVE-dev/prx v0.0.0-20251030022101-ff906928a1e4
9-
github.com/codeGROOVE-dev/turnclient v0.0.0-20251030022425-bc3b14acf75e
9+
github.com/codeGROOVE-dev/prx v0.0.0-20251109164430-90488144076d
10+
github.com/codeGROOVE-dev/turnclient v0.0.0-20251107215141-ee43672b3dc7
1011
golang.org/x/time v0.14.0
1112
)
1213

1314
require (
14-
github.com/codeGROOVE-dev/bdcache v0.5.0 // indirect
15+
github.com/codeGROOVE-dev/bdcache/persist/datastore v0.0.0 // indirect
16+
github.com/codeGROOVE-dev/bdcache/persist/localfs v0.0.0 // indirect
17+
github.com/codeGROOVE-dev/ds9 v0.7.1 // indirect
1518
github.com/codeGROOVE-dev/retry v1.3.0 // indirect
1619
)
20+
21+
replace (
22+
github.com/codeGROOVE-dev/bdcache/persist/datastore => github.com/codeGROOVE-dev/bdcache/persist/datastore v0.0.0-20251121210535-3893c2b92813
23+
github.com/codeGROOVE-dev/bdcache/persist/localfs => github.com/codeGROOVE-dev/bdcache/persist/localfs v0.0.0-20251121210535-3893c2b92813
24+
)

go.sum

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
1-
github.com/codeGROOVE-dev/bdcache v0.5.0 h1:62Ns4QOdZ239LtytJDcO+kI4OOr+5SPh/ct81rGEEtY=
2-
github.com/codeGROOVE-dev/bdcache v0.5.0/go.mod h1:vZlNyKt4Zmse37T9wPZX+J3Kc2fjZlcGzXArQh5W4dc=
3-
github.com/codeGROOVE-dev/ds9 v0.6.0 h1:JG7vBH17UAKaVoeQilrIvA1I0fg3iNbdUMBSDS7ixgI=
4-
github.com/codeGROOVE-dev/ds9 v0.6.0/go.mod h1:0UDipxF1DADfqM5GtjefgB2u+EXdDgOKmxVvrSGLHoM=
1+
github.com/codeGROOVE-dev/bdcache v0.6.1 h1:iFvZTXG+tYcfGHD2Jt4Ud/x7/34O/6kTYP9L6XFQ4QQ=
2+
github.com/codeGROOVE-dev/bdcache v0.6.1/go.mod h1:wJEFNbumCspw3PoiW17afq7QaMSeWXtMDO8WOH3GY74=
3+
github.com/codeGROOVE-dev/bdcache/persist/cloudrun v0.0.0-20251121210535-3893c2b92813 h1:YSXxW9+Xa8aN0TqX/wGUOfJzdezcdmmznX5y3CT2ZoM=
4+
github.com/codeGROOVE-dev/bdcache/persist/cloudrun v0.0.0-20251121210535-3893c2b92813/go.mod h1:cZfKOT5VU9soDvnNPGjp1Rp8C6E6+ZGfrxqIim05d/U=
5+
github.com/codeGROOVE-dev/bdcache/persist/datastore v0.0.0-20251121210535-3893c2b92813 h1:4wcq59rACcRBgbQJGYC2N4Redg4LqmPiM4HkJ3ssXi0=
6+
github.com/codeGROOVE-dev/bdcache/persist/datastore v0.0.0-20251121210535-3893c2b92813/go.mod h1:Q9Bww3n+lMC/kmFdEhslCEyu0l4bsJym0CoH/W1VAVA=
7+
github.com/codeGROOVE-dev/bdcache/persist/localfs v0.0.0-20251121210535-3893c2b92813 h1:sjXDZCJllfGRAE3yGhI1Ns8/w1S72/RCqoJ0K/qeFHU=
8+
github.com/codeGROOVE-dev/bdcache/persist/localfs v0.0.0-20251121210535-3893c2b92813/go.mod h1:I6U3M/72lAouQCf9EoWPJPDop8gPbDlMl9CgWKjxREg=
59
github.com/codeGROOVE-dev/ds9 v0.7.1 h1:UuffbTksanUPERBkOsiPOe46fkTJlzBOA9jUyfkBxEI=
610
github.com/codeGROOVE-dev/ds9 v0.7.1/go.mod h1:0UDipxF1DADfqM5GtjefgB2u+EXdDgOKmxVvrSGLHoM=
711
github.com/codeGROOVE-dev/gsm v0.0.0-20251019065141-833fe2363d22 h1:gtN3rOc6YspO646BkcOxBhPjEqKUz+jl175jIqglfDg=
812
github.com/codeGROOVE-dev/gsm v0.0.0-20251019065141-833fe2363d22/go.mod h1:KV+w19ubP32PxZPE1hOtlCpTaNpF0Bpb32w5djO8UTg=
9-
github.com/codeGROOVE-dev/prx v0.0.0-20251030022101-ff906928a1e4 h1:DSuoUwP3oyR4cHrX0cUh9c7CtYjXNIcyCmqpIwHilIU=
10-
github.com/codeGROOVE-dev/prx v0.0.0-20251030022101-ff906928a1e4/go.mod h1:FEy3gz9IYDXWnKWkoDSL+pWu6rujxbBSrF4w5A8QSK0=
13+
github.com/codeGROOVE-dev/prx v0.0.0-20251109164430-90488144076d h1:KKt93PVYR9Uga8uLPq0HoNlXVW3BTPHGBBxEb5YBxf4=
14+
github.com/codeGROOVE-dev/prx v0.0.0-20251109164430-90488144076d/go.mod h1:FEy3gz9IYDXWnKWkoDSL+pWu6rujxbBSrF4w5A8QSK0=
1115
github.com/codeGROOVE-dev/retry v1.3.0 h1:/+ipAWRJLL6y1R1vprYo0FSjSBvH6fE5j9LKXjpD54g=
1216
github.com/codeGROOVE-dev/retry v1.3.0/go.mod h1:8OgefgV1XP7lzX2PdKlCXILsYKuz6b4ZpHa/20iLi8E=
13-
github.com/codeGROOVE-dev/turnclient v0.0.0-20251030022425-bc3b14acf75e h1:WXHdC8o5KmP5CwkQRiGVywYzsj93fjkRPq7clhfZPq0=
14-
github.com/codeGROOVE-dev/turnclient v0.0.0-20251030022425-bc3b14acf75e/go.mod h1:dVS3MlJDgL6WkfurJAyS7I9Fe1yxxoxxarjVifY5bIo=
17+
github.com/codeGROOVE-dev/turnclient v0.0.0-20251107215141-ee43672b3dc7 h1:183q0bj2y/9hh/K0HZvDXI6sG7liYSRcQVgFx0GY+UA=
18+
github.com/codeGROOVE-dev/turnclient v0.0.0-20251107215141-ee43672b3dc7/go.mod h1:dVS3MlJDgL6WkfurJAyS7I9Fe1yxxoxxarjVifY5bIo=
1519
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
1620
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=

internal/server/server.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"time"
2222

2323
"github.com/codeGROOVE-dev/bdcache"
24+
"github.com/codeGROOVE-dev/bdcache/persist/cloudrun"
2425
"github.com/codeGROOVE-dev/gsm"
2526
"github.com/codeGROOVE-dev/prcost/pkg/cost"
2627
"github.com/codeGROOVE-dev/prcost/pkg/github"
@@ -172,11 +173,22 @@ func New() *Server {
172173

173174
logger.InfoContext(ctx, "Server initialized with CSRF protection enabled")
174175

176+
// Get database name from environment, default to "prcost" if not set.
177+
dbName := os.Getenv("DATASTORE_DB")
178+
if dbName == "" {
179+
dbName = "prcost"
180+
}
181+
175182
// Initialize caches with bdcache (automatically handles memory + persistence).
176-
// WithBestStore uses Cloud Datastore when K_SERVICE is set (Cloud Run/Knative), local files otherwise.
183+
// cloudrun.New uses Cloud Datastore when K_SERVICE is set (Cloud Run/Knative), local files otherwise.
177184
// Single unified cache with 72-hour TTL for all GitHub query results.
185+
githubPersist, err := cloudrun.New[string, any](ctx, dbName)
186+
if err != nil {
187+
logger.ErrorContext(ctx, "Failed to initialize GitHub cache persistence", "error", err)
188+
return nil
189+
}
178190
githubCache, err := bdcache.New[string, any](ctx,
179-
bdcache.WithBestStore("prcost-github"),
191+
bdcache.WithPersistence(githubPersist),
180192
bdcache.WithDefaultTTL(72*time.Hour),
181193
bdcache.WithMemorySize(2000),
182194
)
@@ -186,8 +198,13 @@ func New() *Server {
186198
}
187199

188200
// Separate caches for non-GitHub data with 6-day TTL
201+
prDataPersist, err := cloudrun.New[string, cost.PRData](ctx, dbName)
202+
if err != nil {
203+
logger.ErrorContext(ctx, "Failed to initialize PR data cache persistence", "error", err)
204+
return nil
205+
}
189206
prDataCache, err := bdcache.New[string, cost.PRData](ctx,
190-
bdcache.WithBestStore("prcost-prdata"),
207+
bdcache.WithPersistence(prDataPersist),
191208
bdcache.WithDefaultTTL(6*24*time.Hour),
192209
bdcache.WithMemorySize(1000),
193210
)
@@ -196,8 +213,13 @@ func New() *Server {
196213
return nil
197214
}
198215

216+
calcResultPersist, err := cloudrun.New[string, cost.Breakdown](ctx, dbName)
217+
if err != nil {
218+
logger.ErrorContext(ctx, "Failed to initialize calc result cache persistence", "error", err)
219+
return nil
220+
}
199221
calcResultCache, err := bdcache.New[string, cost.Breakdown](ctx,
200-
bdcache.WithBestStore("prcost-calcresult"),
222+
bdcache.WithPersistence(calcResultPersist),
201223
bdcache.WithDefaultTTL(6*24*time.Hour),
202224
bdcache.WithMemorySize(1000),
203225
)

0 commit comments

Comments
 (0)