31 lines
685 B
Go
31 lines
685 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func openDB() (*sql.DB, error) {
|
|
dsn := os.Getenv("MYSQL_DSN")
|
|
if dsn == "" {
|
|
log.Fatal("MYSQL_DSN is empty!")
|
|
}
|
|
return sql.Open("mysql", dsn)
|
|
}
|
|
|
|
func migrate(ctx context.Context, db *sql.DB) error {
|
|
ddl := `
|
|
CREATE TABLE IF NOT EXISTS students (
|
|
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
name VARCHAR(100) NOT NULL,
|
|
age INT NOT NULL,
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;`
|
|
_, err := db.ExecContext(ctx, ddl)
|
|
return err
|
|
}
|