Connecting to the database

This commit is contained in:
vinchent 2024-08-04 23:06:13 +02:00
parent d3e477eebd
commit 42b8708243
6 changed files with 82 additions and 17 deletions

View File

@ -4,6 +4,7 @@ import (
"flag" "flag"
"fmt" "fmt"
"log" "log"
"myapp/internal/driver"
"net/http" "net/http"
"os" "os"
"time" "time"
@ -27,7 +28,7 @@ type config struct {
type application struct { type application struct {
config config config config
infolog *log.Logger infoLog *log.Logger
errorLog *log.Logger errorLog *log.Logger
version string version string
} }
@ -42,7 +43,7 @@ func (app *application) serve() error {
WriteTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second,
} }
app.infolog.Printf( app.infoLog.Printf(
"Starting Backend server in %s mode on port %d", "Starting Backend server in %s mode on port %d",
app.config.env, app.config.env,
app.config.port, app.config.port,
@ -63,7 +64,7 @@ func main() {
flag.StringVar( flag.StringVar(
&cfg.db.dsn, &cfg.db.dsn,
"dsn", "dsn",
"root@tcp(localhost:6379)/widgets?parseTime=true&tls=false", "root:example@tcp(localhost:3306)/widgets?parseTime=true&tls=false",
"Application environment {development|production}", "Application environment {development|production}",
) )
@ -75,14 +76,22 @@ func main() {
infoLog := log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime) infoLog := log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime)
errorLog := log.New(os.Stdout, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile) errorLog := log.New(os.Stdout, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile)
conn, err := driver.OpenDB(cfg.db.dsn)
if err != nil {
errorLog.Fatal(err)
}
defer conn.Close()
app := &application{ app := &application{
version: version, version: version,
config: cfg, config: cfg,
infolog: infoLog, infoLog: infoLog,
errorLog: errorLog, errorLog: errorLog,
} }
err := app.serve() app.infoLog.Println("Connected to MariaDB")
err = app.serve()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"html/template" "html/template"
"log" "log"
"myapp/internal/driver"
"net/http" "net/http"
"os" "os"
"time" "time"
@ -30,7 +31,7 @@ type config struct {
type application struct { type application struct {
config config config config
infolog *log.Logger infoLog *log.Logger
errorLog *log.Logger errorLog *log.Logger
templateCache map[string]*template.Template templateCache map[string]*template.Template
version string version string
@ -46,7 +47,7 @@ func (app *application) serve() error {
WriteTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second,
} }
app.infolog.Printf( app.infoLog.Printf(
"Starting HTTP server in %s mode on port %d", "Starting HTTP server in %s mode on port %d",
app.config.env, app.config.env,
app.config.port, app.config.port,
@ -67,8 +68,8 @@ func main() {
flag.StringVar( flag.StringVar(
&cfg.db.dsn, &cfg.db.dsn,
"dsn", "dsn",
"root@tcp(localhost:6379)/widgets?parseTime=true&tls=false", "root:example@tcp(localhost:3306)/widgets?parseTime=true&tls=false",
"Application environment {development|production}", "DSN",
) )
flag.StringVar(&cfg.api, "api", "http://localhost:4001", "URL to api") flag.StringVar(&cfg.api, "api", "http://localhost:4001", "URL to api")
@ -80,17 +81,25 @@ func main() {
infoLog := log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime) infoLog := log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime)
errorLog := log.New(os.Stdout, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile) errorLog := log.New(os.Stdout, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile)
conn, err := driver.OpenDB(cfg.db.dsn)
if err != nil {
errorLog.Fatal(err)
}
defer conn.Close()
tc := make(map[string]*template.Template) tc := make(map[string]*template.Template)
app := &application{ app := &application{
config: cfg, config: cfg,
infolog: infoLog, infoLog: infoLog,
errorLog: errorLog, errorLog: errorLog,
templateCache: tc, templateCache: tc,
version: version, version: version,
} }
err := app.serve() app.infoLog.Println("Connected to MariaDB")
err = app.serve()
if err != nil { if err != nil {
app.errorLog.Println(err) app.errorLog.Println(err)
log.Fatal(err) log.Fatal(err)

View File

@ -57,12 +57,22 @@ Virtual Terminal
<span class="visually-hidden">Loading...</span> <span class="visually-hidden">Loading...</span>
</div> </div>
</div> </div>
<input id="payment_intent"
<input id="payment_intent" type="hidden" name="payment_intent" value="payment_intent"> type="hidden"
<input id="payment_method" type="hidden" name="payment_method" value="payment_method"> name="payment_intent"
<input id="payment_amount" type="hidden" name="payment_amount" value="payment_amount"> value="payment_intent">
<input id="payment_currency" type="hidden" name="payment_currency" value="payment_currency"> <input id="payment_method"
type="hidden"
name="payment_method"
value="payment_method">
<input id="payment_amount"
type="hidden"
name="payment_amount"
value="payment_amount">
<input id="payment_currency"
type="hidden"
name="payment_currency"
value="payment_currency">
</form> </form>
{{ end }} {{ end }}
{{ define "js" }} {{ define "js" }}

3
go.mod
View File

@ -5,5 +5,8 @@ go 1.22.5
require ( require (
github.com/go-chi/chi/v5 v5.1.0 github.com/go-chi/chi/v5 v5.1.0
github.com/go-chi/cors v1.2.1 github.com/go-chi/cors v1.2.1
github.com/go-sql-driver/mysql v1.8.1
github.com/stripe/stripe-go/v79 v79.6.0 github.com/stripe/stripe-go/v79 v79.6.0
) )
require filippo.io/edwards25519 v1.1.0 // indirect

4
go.sum
View File

@ -1,9 +1,13 @@
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4= github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58= github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=

30
internal/driver/driver.go Normal file
View File

@ -0,0 +1,30 @@
package driver
import (
"context"
"database/sql"
"fmt"
"time"
_ "github.com/go-sql-driver/mysql"
)
func OpenDB(dsn string) (*sql.DB, error) {
db, err := sql.Open("mysql", dsn)
if err != nil {
return nil, err
}
db.SetConnMaxLifetime(time.Minute * 3)
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(10)
ctx, _ := context.WithTimeout(context.Background(), 3*time.Second)
err = db.PingContext(ctx)
if err != nil {
fmt.Println(err)
return nil, err
}
return db, nil
}