From 2e0ef0b7d88838ea00cf538870ba0a7c4951108c Mon Sep 17 00:00:00 2001 From: POUDEROUX Tom Date: Wed, 23 Apr 2025 21:43:57 +0200 Subject: [PATCH] Adding the database + README --- .gitignore | 1 + README.md | 14 ++++++++++++ go.mod | 6 ++++- go.sum | 4 ++++ main.go | 2 ++ src/database/database.go | 47 ++++++++++++++++++++++++++++++---------- 6 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 README.md diff --git a/.gitignore b/.gitignore index 1544018..c89044b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ pkg/ .go/ .vscode/ +bin/ config.json chromagies diff --git a/README.md b/README.md new file mode 100644 index 0000000..526a2ce --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Chromagies + +## Database setup + +Create database : CREATE DATABASE 'DATABASE_NAME'; + +Replace DATABASE_NAME with yours. + +Create user : CREATE USER 'DATABASE_USER'@'localhost' IDENTIFIED BY 'A_VERY_BAD_PASSWORD' + +Replace DATABASE_USER and A_VERY_BAD_PASSWORD by yours. + +Give permissions to user : GRANT SELECT, INSERT, CREATE, DELETE, UPDATE, DROP, EXECUTE ON 'DATABASE_NAME' TO 'DATABASE_USER'@'localhost'; + diff --git a/go.mod b/go.mod index 2805988..359d6c5 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,8 @@ module chromagies go 1.24.2 -require github.com/gorilla/mux v1.8.1 +require ( + github.com/gorilla/mux v1.8.1 + filippo.io/edwards25519 v1.1.0 + github.com/go-sql-driver/mysql v1.9.2 +) diff --git a/go.sum b/go.sum index 7128337..1673b5e 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,6 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= +github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= diff --git a/main.go b/main.go index fdb4a74..8aec6c4 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "chromagies/src/api" "chromagies/src/config" + "chromagies/src/database" "fmt" "log" "net/http" @@ -28,6 +29,7 @@ func main() { initConfig() startLogger() + database.Init() initRouter() stopTime := time.Now() diff --git a/src/database/database.go b/src/database/database.go index 1b432f3..057daaa 100644 --- a/src/database/database.go +++ b/src/database/database.go @@ -4,27 +4,52 @@ import ( "chromagies/src/config" "database/sql" "fmt" + "log" + + _ "github.com/go-sql-driver/mysql" ) var db *sql.DB var dbConfig config.Database var dbPath string -func Init(conf config.Config) { - dbConfig = conf.Database - dbPath = fmt.Sprintf("%s:%s@(%s:%d)/%s?parseTime=true", dbConfig.Host, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Database) -} - -func openDB() { +func Init() { var err error - - if db != nil { - db.Close() - db = nil - } + dbConfig = config.GetConfig().Database + dbPath = fmt.Sprintf("%s:%s@(%s:%s)/%s?parseTime=true", dbConfig.User, dbConfig.Password, dbConfig.Host, dbConfig.Port, dbConfig.Database) db, err = sql.Open("mysql", dbPath) if err != nil { + log.Println("Cannot connect to database !") + log.Fatal(err) + } + err = db.Ping() + if err != nil { + log.Println("Cannot ping the database !") + log.Fatal(err) + } + + var query string = `SHOW GRANTS;` + var rows *sql.Rows = executeQuery(query) + defer rows.Close() + + for rows.Next() { + var res string + rows.Scan(&res) + fmt.Println(res) } } + +func executeQuery(query string) *sql.Rows { + var err error + var rows *sql.Rows + + rows, err = db.Query(query) + if err != nil { + log.Println("Error while query DB :") + log.Fatal(err) + } + + return rows +}