package models import ( "database/sql" "log" "list_app/db" ) type Table string const ( Movies Table = "movies" Series Table = "series" Games Table = "games" ) type Media struct { ID int `json:"id"` Code string `json:"code"` Title string `json:"title"` Released string `json:"released"` WebImg string `json:"webImg"` Poster string `json:"poster"` Year string `json:"year"` } func Save(table Table, code, title, released, webImg, poster, year string) int64 { sql := "INSERT INTO " + string(table) + " (code, title, released, webImg, poster, year) VALUES (?,?,?,?,?,?)" result, err := db.Pool.Exec(sql, code, title, released, webImg, poster, year) if err != nil { log.Println(err) return 0 } changes, _ := result.RowsAffected() return changes } func UpdateWebImg(table Table, code, webImg string) int64 { sql := "UPDATE " + string(table) + " SET webImg = ? WHERE code = ?;" result, err := db.Pool.Exec(sql, webImg, code) if err != nil { log.Println(err) return 0 } changes, _ := result.RowsAffected() return changes } func FindOneAndDelete(table Table, code string) int64 { result, err := db.Pool.Exec("DELETE FROM "+string(table)+" WHERE code = ?;", code) if err != nil { log.Println(err) return 0 } changes, _ := result.RowsAffected() return changes } func FindOne(table Table, code string) []Media { rows, err := db.Pool.Query("SELECT id, code, title, released, webImg, poster, year FROM "+string(table)+" WHERE code = ?;", code) if err != nil { log.Println(err) return []Media{} } return scanMedia(rows) } func Find(table Table) []Media { rows, err := db.Pool.Query("SELECT id, code, title, released, webImg, poster, year FROM " + string(table) + ";") if err != nil { log.Println(err) return []Media{} } return scanMedia(rows) } func scanMedia(rows *sql.Rows) []Media { defer rows.Close() result := []Media{} for rows.Next() { var m Media if err := rows.Scan(&m.ID, &m.Code, &m.Title, &m.Released, &m.WebImg, &m.Poster, &m.Year); err != nil { log.Println(err) continue } result = append(result, m) } return result }