...
1 package postgres
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 const (
9 defaultUser string = "postgres"
10 defaultDatabase string = "postgres"
11 )
12
13 type SSLMode string
14
15 const (
16 Prefer SSLMode = "prefer"
17 Disable SSLMode = "disable"
18 Require SSLMode = "require"
19 VerifyCA SSLMode = "verify-ca"
20 VerifyFull SSLMode = "verify-full"
21 )
22
23 func (m SSLMode) String() string {
24 switch m {
25 case Prefer:
26 return "prefer"
27 case Disable:
28 return "disable"
29 case Require:
30 return "require"
31 case VerifyCA:
32 return "verify-ca"
33 case VerifyFull:
34 return "verify-full"
35 }
36 return ""
37 }
38
39
40
41
42
43 type DSNOptions struct {
44 Host string
45 Port int
46 DBName string
47 User string
48 Password string
49 SSLMode SSLMode
50 }
51
52 func (dsn *DSNOptions) ToString() string {
53 var parts []string
54
55 if dsn.Host != "" {
56 parts = append(parts, fmt.Sprintf("host=%s", dsn.Host))
57 }
58 if dsn.Port != 0 {
59 parts = append(parts, fmt.Sprintf("port=%d", dsn.Port))
60 }
61 if dsn.DBName != "" {
62
63 parts = append(parts, fmt.Sprintf("database=%s", dsn.DBName))
64 } else {
65
66 parts = append(parts, fmt.Sprintf("database=%s", defaultDatabase))
67 }
68 if dsn.User != "" {
69 parts = append(parts, fmt.Sprintf("user=%s", dsn.User))
70 } else {
71
72 parts = append(parts, fmt.Sprintf("user=%s", defaultUser))
73 }
74 if dsn.Password != "" {
75 parts = append(parts, fmt.Sprintf("password=%s", dsn.Password))
76 }
77 if dsn.SSLMode != "" {
78 parts = append(parts, fmt.Sprintf("sslmode=%s", dsn.SSLMode.String()))
79 }
80
81 return strings.Join(parts[:], " ")
82 }
83
View as plain text