package db import ( "database/sql" "fmt" "log" "net/http" "time" "github.com/gin-gonic/gin" ) type User struct { ID int `json:"id"` Name string `json:"name"` Token string `json:"token"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` IsDelete bool `json:"isDelete"` } func addUser(c *gin.Context) { var user User if err := c.ShouldBindJSON(&user); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } db, err := sql.Open("sqlite3", "test.db") if err != nil { log.Fatal(err) } stmt, err := db.Prepare("INSERT INTO users(name, token, created_at, updated_at, is_delete) values(?,?,?,?,?)") if err != nil { log.Fatal(err) } res, err := stmt.Exec(user.Name, user.Token, user.CreatedAt, user.UpdatedAt, user.IsDelete) if err != nil { log.Fatal(err) } id, err := res.LastInsertId() if err != nil { log.Fatal(err) } user.ID = int(id) c.JSON(http.StatusOK, user) } func updateUser(c *gin.Context) { id := c.Param("id") var user User if err := c.ShouldBindJSON(&user); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } db, err := sql.Open("sqlite3", "test.db") if err != nil { log.Fatal(err) } stmt, err := db.Prepare("UPDATE users SET name=?, token=?, created_at=?, updated_at=?, is_delete=? WHERE id=?") if err != nil { log.Fatal(err) } _, err = stmt.Exec(user.Name, user.Token, user.CreatedAt, user.UpdatedAt, user.IsDelete, id) if err != nil { log.Fatal(err) } c.JSON(http.StatusOK, user) } func deleteUser(c *gin.Context) { id := c.Param("id") db, err := sql.Open("sqlite3", "test.db") if err != nil { log.Fatal(err) } stmt, err := db.Prepare("DELETE FROM users WHERE id=?") if err != nil { log.Fatal(err) } _, err = stmt.Exec(id) if err != nil { log.Fatal(err) } c.JSON(http.StatusOK, gin.H{"message": "ok"}) } func initDB() { db, err := sql.Open("sqlite3", "./db/cat.db") if err != nil { log.Fatal(err) } defer db.Close() _, err = db.Exec("CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, token TEXT, created_at DATETIME, updated_at DATETIME, is_delete BOOLEAN)") if err != nil { log.Fatal(err) } shouldBeDeleted := false now := time.Now().Format(time.RFC3339) stmt, err := db.Prepare("INSERT INTO users(name, token, created_at, updated_at, is_delete) values(?,?,?,?,?)") if err != nil { log.Fatal(err) } res, err := stmt.Exec("Test User", "123456789", now, now, shouldBeDeleted) if err != nil { log.Fatal(err) } id, err := res.LastInsertId() if err != nil { log.Fatal(err) } fmt.Printf("New user ID: %d\n", id) }