Adding the database + README

dev
POUDEROUX Tom 2025-04-23 21:43:57 +02:00
parent e4eea97344
commit 2e0ef0b7d8
6 changed files with 62 additions and 12 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
pkg/
.go/
.vscode/
bin/
config.json
chromagies

14
README.md 100644
View File

@ -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';

6
go.mod
View File

@ -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
)

4
go.sum
View File

@ -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=

View File

@ -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()

View File

@ -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
}