Well well well
This commit is contained in:
parent
4af9d5d9c3
commit
514331411f
1 changed files with 82 additions and 9 deletions
|
@ -18,15 +18,49 @@ func delayPrint() {
|
||||||
fmt.Printf("delay print\n")
|
fmt.Printf("delay print\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reads files from the migrations directory and runs them
|
||||||
|
func runMigrations(db *sqlx.DB) error {
|
||||||
|
// Read the migrations directory
|
||||||
|
files, err := os.ReadDir("migrations")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run each migration file
|
||||||
|
for _, file := range files {
|
||||||
|
// Skip directories
|
||||||
|
if file.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read the migration file
|
||||||
|
content, err := os.ReadFile("migrations/" + file.Name())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Execute the migration SQL
|
||||||
|
_, err = db.Exec(string(content))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error executing migration %s: %s\n", file.Name(), err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Migration %s executed\n", file.Name())
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Migrations complete")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// This is what a handler looks like
|
// This is what a handler looks like
|
||||||
func getRoot(w http.ResponseWriter, r *http.Request) {
|
func handler(w http.ResponseWriter, r *http.Request) {
|
||||||
fmt.Printf("got / request\n")
|
fmt.Println("Request received")
|
||||||
go delayPrint()
|
go delayPrint() // This will run in the background
|
||||||
io.WriteString(w, "This is my website!\n")
|
io.WriteString(w, "This is my website!\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func dbConnect() *sqlx.DB {
|
||||||
println("Starting server...")
|
|
||||||
// Check for the environment variable
|
// Check for the environment variable
|
||||||
dbpath := os.Getenv("SQLITE_DB_PATH")
|
dbpath := os.Getenv("SQLITE_DB_PATH")
|
||||||
|
|
||||||
|
@ -41,21 +75,60 @@ func main() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer db.Close()
|
|
||||||
|
|
||||||
err = db.Ping()
|
err = db.Ping()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Slide into the database dms with some slick SQL
|
// Run the migrations
|
||||||
db.MustExec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)")
|
err = runMigrations(db)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return db
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
println("Starting server...")
|
||||||
|
|
||||||
|
// Connect to the database
|
||||||
|
db := dbConnect()
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
|
// Tx is a transaction
|
||||||
|
tx := db.MustBegin()
|
||||||
|
tx.MustExec("INSERT INTO users (username, password) VALUES (?, ?)", "John Doe", "a")
|
||||||
|
err := tx.Commit()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is how you query the database
|
||||||
|
rows, err := db.Queryx("SELECT * FROM users")
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
var user struct {
|
||||||
|
ID int
|
||||||
|
Username string
|
||||||
|
Password string
|
||||||
|
}
|
||||||
|
err = rows.StructScan(&user)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Printf("User: %d %s %s\n", user.ID, user.Username, user.Password)
|
||||||
|
}
|
||||||
|
|
||||||
// Mounting the handler
|
// Mounting the handler
|
||||||
// http.HandleFunc("/", getRoot)
|
|
||||||
|
|
||||||
fs := http.FileServer(http.Dir("static"))
|
fs := http.FileServer(http.Dir("static"))
|
||||||
http.Handle("/", fs)
|
http.Handle("/", fs)
|
||||||
|
http.HandleFunc("/hello", handler)
|
||||||
|
|
||||||
// Start the server on port 8080
|
// Start the server on port 8080
|
||||||
err = http.ListenAndServe(":8080", nil)
|
err = http.ListenAndServe(":8080", nil)
|
||||||
|
|
Loading…
Reference in a new issue