Prepare read-only PostgreSQL paper queries and optional Core wiring
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"gitea.entroia.com/Zayden-Jung/foundry-core/internal/auth"
|
||||
"gitea.entroia.com/Zayden-Jung/foundry-core/internal/codex"
|
||||
"gitea.entroia.com/Zayden-Jung/foundry-core/internal/platform"
|
||||
"gitea.entroia.com/Zayden-Jung/foundry-core/internal/research"
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/stdlib"
|
||||
)
|
||||
@@ -61,6 +62,33 @@ func main() {
|
||||
log.Fatal(err)
|
||||
}
|
||||
mux := http.NewServeMux()
|
||||
var papers research.Repository
|
||||
if researchDSN := os.Getenv("FOUNDRY_RESEARCH_DATABASE_URL"); researchDSN != "" {
|
||||
researchConfig, err := pgx.ParseConfig(researchDSN)
|
||||
if err != nil {
|
||||
log.Fatal("Invalid research database configuration")
|
||||
}
|
||||
researchConfig.RuntimeParams["default_transaction_read_only"] = "on"
|
||||
researchConfig.RuntimeParams["application_name"] = "foundry-research"
|
||||
researchDB := stdlib.OpenDB(*researchConfig)
|
||||
defer researchDB.Close()
|
||||
researchDB.SetMaxOpenConns(2)
|
||||
researchDB.SetMaxIdleConns(2)
|
||||
researchDB.SetConnMaxIdleTime(5 * time.Minute)
|
||||
researchDB.SetConnMaxLifetime(30 * time.Minute)
|
||||
repository, err := research.NewPostgresRepository(researchDB, env("FOUNDRY_RESEARCH_SCHEMA", "research"))
|
||||
if err != nil {
|
||||
log.Fatal("Invalid research database configuration")
|
||||
}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
err = repository.Check(ctx)
|
||||
cancel()
|
||||
if err != nil {
|
||||
log.Fatal("Research database is unavailable or not published")
|
||||
}
|
||||
papers = repository
|
||||
}
|
||||
research.Register(mux, papers, callbacks)
|
||||
if err := codex.Register(mux, callbacks, os.Getenv("FOUNDRY_CODEX_SOCKET"), os.Getenv("FOUNDRY_CODEX_GRANTS")); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user