11package main
22
33import (
4+ "database/sql"
45 "errors"
56 "fmt"
67 "io/ioutil"
78 "os"
89 "strings"
910
1011 "github.com/Songmu/prompter"
11- "github.com/jessevdk/go-flags"
12+ flags "github.com/jessevdk/go-flags"
1213 "github.com/jmoiron/sqlx"
1314 log "github.com/sirupsen/logrus"
1415
1516 "github.com/oidc-mytoken/server/internal/config"
16- "github.com/oidc-mytoken/server/internal/db"
17+ "github.com/oidc-mytoken/server/internal/db/cluster "
1718 "github.com/oidc-mytoken/server/internal/db/dbdefinition"
1819 "github.com/oidc-mytoken/server/internal/jws"
1920 "github.com/oidc-mytoken/server/internal/model"
2021 loggerUtils "github.com/oidc-mytoken/server/internal/utils/logger"
2122 "github.com/oidc-mytoken/server/internal/utils/zipdownload"
22- model2 "github.com/oidc-mytoken/server/pkg /model"
23- event "github.com/oidc-mytoken/server/shared/supertoken /event/pkg"
23+ model2 "github.com/oidc-mytoken/server/shared /model"
24+ event "github.com/oidc-mytoken/server/shared/mytoken /event/pkg"
2425 "github.com/oidc-mytoken/server/shared/utils/fileutil"
2526)
2627
@@ -35,11 +36,19 @@ func main() {
3536 loggerUtils .Init ()
3637
3738 parser := flags .NewNamedParser ("mytoken" , flags .HelpFlag | flags .PassDoubleDash )
38- parser .AddCommand ("signing-key" , "Generates a new signing key" , "Generates a new signing key according to the properties specified in the config file and stores it." , & genSigningKeyComm )
39- parser .AddCommand ("db" , "Setups the database" , "Setups the database as needed and specified in the config file." , & createDBComm )
40- parser .AddCommand ("install" , "Installs needed dependencies" , "" , & installComm )
41- _ , err := parser .Parse ()
42- if err != nil {
39+ if _ , err := parser .AddCommand ("signing-key" , "Generates a new signing key" , "Generates a new signing key according to the properties specified in the config file and stores it." , & genSigningKeyComm ); err != nil {
40+ log .WithError (err ).Fatal ()
41+ os .Exit (1 )
42+ }
43+ if _ , err := parser .AddCommand ("db" , "Setups the database" , "Setups the database as needed and specified in the config file." , & createDBComm ); err != nil {
44+ log .WithError (err ).Fatal ()
45+ os .Exit (1 )
46+ }
47+ if _ , err := parser .AddCommand ("install" , "Installs needed dependencies" , "" , & installComm ); err != nil {
48+ log .WithError (err ).Fatal ()
49+ os .Exit (1 )
50+ }
51+ if _ , err := parser .Parse (); err != nil {
4352 var flagError * flags.Error
4453 if errors .As (err , & flagError ) {
4554 if flagError .Type == flags .ErrHelp {
@@ -100,15 +109,15 @@ func (c *commandGenSigningKey) Execute(args []string) error {
100109// Execute implements the flags.Commander interface
101110func (c * commandCreateDB ) Execute (args []string ) error {
102111 password := ""
103- if c .Password != nil && len ( * c .Password ) == 0 { // -p specified without argument
112+ if c .Password != nil && * c .Password == "" { // -p specified without argument
104113 password = prompter .Password ("Database Password" )
105114 }
106- dsn := fmt . Sprintf ( "%s:%s@%s(%s)/" , c . Username , password , "tcp" , config .Get (). DB . Host )
107- if err := db . ConnectDSN ( dsn ); err != nil {
108- return err
109- }
110- log . WithField ( "user" , c . Username ). Debug ( "Connected to database" )
111- if err := checkDB (); err != nil {
115+ db := cluster . NewFromConfig ( config.DBConf {
116+ Hosts : config . Get (). DB . Hosts ,
117+ User : c . Username ,
118+ Password : password ,
119+ } )
120+ if err := checkDB (db ); err != nil {
112121 return err
113122 }
114123 err := db .Transact (func (tx * sqlx.Tx ) error {
@@ -121,7 +130,7 @@ func (c *commandCreateDB) Execute(args []string) error {
121130 if err := createTables (tx ); err != nil {
122131 return err
123132 }
124- if err := addPredefinedValues (tx ); err != nil {
133+ if err := addPredefinedValues (tx ); err != nil { // skipcq RVV-B0005
125134 return err
126135 }
127136 return nil
@@ -160,7 +169,7 @@ func createTables(tx *sqlx.Tx) error {
160169 }
161170 for _ , cmd := range dbdefinition .DDL {
162171 cmd = strings .TrimSpace (cmd )
163- if len ( cmd ) > 0 && ! strings .HasPrefix (cmd , "--" ) {
172+ if cmd != "" && ! strings .HasPrefix (cmd , "--" ) {
164173 log .Trace (cmd )
165174 if _ , err := tx .Exec (cmd ); err != nil {
166175 return err
@@ -199,16 +208,21 @@ func createUser(tx *sqlx.Tx) error {
199208 return nil
200209}
201210
202- func checkDB () error {
211+ func checkDB (db * cluster. Cluster ) error {
203212 log .WithField ("database" , config .Get ().DB .DB ).Debug ("Check if database already exists" )
204- rows , err := db .DB ().Query (`SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?` , config .Get ().DB .DB )
205- if err != nil {
213+ var rows * sql.Rows
214+ if err := db .Transact (func (tx * sqlx.Tx ) error {
215+ var err error
216+ rows , err = tx .Query (`SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?` , config .Get ().DB .DB )
217+ return err
218+ }); err != nil {
206219 return err
207220 }
208221 defer rows .Close ()
209222 if rows .Next () {
210223 if ! prompter .YesNo ("The database already exists. If we continue all data will be deleted. Do you want to continue?" , false ) {
211- os .Exit (1 )
224+ _ = rows .Close ()
225+ os .Exit (1 ) // skipcq CRT-D0011
212226 }
213227 }
214228 return nil
0 commit comments