@@ -3,16 +3,20 @@ package main
3
3
import (
4
4
"errors"
5
5
"log/slog"
6
+ "os"
6
7
"reflect"
7
8
8
9
"github.com/caarlos0/env/v11"
9
10
"github.com/jackc/pgx/v5/pgxpool"
11
+ "github.com/jackc/pgx/v5/tracelog"
12
+ pgxslog "github.com/mcosta74/pgx-slog"
10
13
)
11
14
12
15
type Config struct {
13
- Host string `env:"HOST" envDefault:"localhost"`
14
- Port string `env:"PORT" envDefault:"80"`
15
- LogLevel slog.Level `env:"LOG_LEVEL" envDefault:"error"`
16
+ Host string `env:"HOST" envDefault:"localhost"`
17
+ Port string `env:"PORT" envDefault:"80"`
18
+
19
+ Logger * slog.Logger `env:"LOG_LEVEL" envDefault:"error"`
16
20
17
21
RedirectDIDTemplate URLTemplate `env:"REDIRECT_DID_TEMPLATE" envDefault:"https://bsky.app/profile/{did}"`
18
22
RedirectHandleTemplate URLTemplate `env:"REDIRECT_HANDLE_TEMPLATE" envDefault:"https://{handle.domain}?handle={handle}"`
@@ -25,20 +29,37 @@ type Config struct {
25
29
MemoryDomains []string `env:"MEMORY_DOMAINS"`
26
30
27
31
Provider ProvidesDecentralizedIDs `env:"DID_PROVIDER,required"`
32
+
33
+ CheckDomainParameter string `env:"CHECK_DOMAIN_PARAMETER" envDefault:"handle"`
28
34
}
29
35
30
36
func ConfigFromEnvironment () (Config , error ) {
31
37
config := Config {}
32
38
33
39
err := env .ParseWithOptions (& config , env.Options {
34
40
FuncMap : map [reflect.Type ]env.ParserFunc {
35
- reflect .TypeFor [slog.Level ](): func (v string ) (interface {}, error ) {
41
+ reflect .TypeFor [slog.Logger ](): func (v string ) (interface {}, error ) {
36
42
var level slog.Level
37
- return level , level .UnmarshalText ([]byte (v ))
43
+
44
+ err := level .UnmarshalText ([]byte (v ))
45
+
46
+ if err != nil {
47
+ return nil , err
48
+ }
49
+
50
+ return * slog .New (slog .NewTextHandler (os .Stdout , & slog.HandlerOptions {
51
+ Level : level ,
52
+ })), nil
38
53
},
39
54
reflect .TypeFor [pgxpool.Config ](): func (v string ) (interface {}, error ) {
40
- config , err := pgxpool .ParseConfig (v )
41
- return * config , err
55
+ databaseConfig , err := pgxpool .ParseConfig (v )
56
+
57
+ databaseConfig .ConnConfig .Tracer = & tracelog.TraceLog {
58
+ Logger : pgxslog .NewLogger (config .Logger ),
59
+ LogLevel : tracelog .LogLevelDebug ,
60
+ }
61
+
62
+ return * databaseConfig , err
42
63
},
43
64
reflect .TypeFor [ProvidesDecentralizedIDs ](): func (v string ) (interface {}, error ) {
44
65
switch v {
0 commit comments