分解
This commit is contained in:
136
models/Image.go
Normal file
136
models/Image.go
Normal file
@@ -0,0 +1,136 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"log"
|
||||
"main/configs"
|
||||
)
|
||||
|
||||
type Image struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (image *Image) Create() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("INSERT INTO images(name, created_at, updated_at) values(?, ?, ?)")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
result, err := stmt.Exec(image.Name, image.CreatedAt, image.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
image.ID = int(id)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (image *Image) Delete() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("DELETE FROM images WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(image.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (image *Image) Update() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("UPDATE images SET name = ?, updated_at = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(image.Name, image.UpdatedAt, image.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (image *Image) Get() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT id, name, created_at, updated_at FROM images WHERE id = ?", image.ID).Scan(&image.ID, &image.Name, &image.CreatedAt, &image.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func QueryImages(page int, pagesize int) (images []interface{}) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
rows, err := db.Query("SELECT id, name, created_at, updated_at FROM images LIMIT ?, ?", (page-1)*pagesize, pagesize)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
image := Image{}
|
||||
err := rows.Scan(&image.ID, &image.Name, &image.CreatedAt, &image.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
images = append(images, image)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CountImages() (count int) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT COUNT(*) FROM images").Scan(&count)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
@@ -3,14 +3,13 @@ package models
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"main/configs"
|
||||
)
|
||||
|
||||
type ListView struct {
|
||||
Code int64 `json:"code"`
|
||||
Page int64 `json:"page"`
|
||||
PageSize int64 `json:"page_size"`
|
||||
Total int64 `json:"total"`
|
||||
Code int `json:"code"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
Total int `json:"total"`
|
||||
Next bool `json:"next"`
|
||||
List []interface{} `json:"list"`
|
||||
}
|
||||
@@ -32,292 +31,72 @@ func (listview *ListView) ToJSON() []byte {
|
||||
return b
|
||||
}
|
||||
|
||||
// 查詢數據(分頁, 每頁數量, 排序, 條件, 關聯, 獲取總數)
|
||||
func (listview *ListView) Read(name string, page int64, page_size int64) error {
|
||||
|
||||
// 獲取數據庫連接
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// 獲取總數
|
||||
var total int64
|
||||
err = db.QueryRow("SELECT COUNT(*) FROM " + name).Scan(&total)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
// 獲取數據
|
||||
rows, err := db.Query("SELECT * FROM "+name+" LIMIT ?, ?", (page-1)*page_size, page_size)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
// 將數據轉換成對象
|
||||
switch name {
|
||||
case "images":
|
||||
for rows.Next() {
|
||||
var image Image
|
||||
err = rows.Scan(&image.ID, &image.Name, &image.CreatedAt, &image.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
listview.List = append(listview.List, image)
|
||||
}
|
||||
case "models":
|
||||
for rows.Next() {
|
||||
var model Model
|
||||
err = rows.Scan(&model.ID, &model.Name, &model.CreatedAt, &model.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
listview.List = append(listview.List, model)
|
||||
}
|
||||
default:
|
||||
for rows.Next() {
|
||||
var object Object
|
||||
err = rows.Scan(&object.ID, &object.Name, &object.CreatedAt, &object.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
listview.List = append(listview.List, object)
|
||||
}
|
||||
}
|
||||
|
||||
// 設置返回值
|
||||
listview.Code = 0
|
||||
listview.Page = page
|
||||
listview.PageSize = page_size
|
||||
listview.Total = total
|
||||
listview.Next = total > page*page_size
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type Object struct {
|
||||
ID int64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
tablename string
|
||||
}
|
||||
|
||||
type Image struct {
|
||||
Object
|
||||
}
|
||||
|
||||
type Model struct {
|
||||
Object
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
type Tag struct {
|
||||
Object
|
||||
}
|
||||
|
||||
type User struct {
|
||||
Object
|
||||
}
|
||||
|
||||
type Task struct {
|
||||
Object
|
||||
}
|
||||
|
||||
type ObjectInterface interface {
|
||||
Create() error
|
||||
Delete() error
|
||||
Update() error
|
||||
Get() error
|
||||
GetAll() ([]Object, error)
|
||||
GetPage(page int64, page_size int64) (ListView, error)
|
||||
ToJSON() []byte
|
||||
}
|
||||
|
||||
// 按照名稱返回響應的對象類型
|
||||
func GetObject(name string, id int64) ObjectInterface {
|
||||
switch name {
|
||||
case "images":
|
||||
return &Image{
|
||||
Object{tablename: name, ID: id},
|
||||
}
|
||||
default:
|
||||
return &Object{tablename: name, ID: id}
|
||||
}
|
||||
}
|
||||
|
||||
// 創建對象
|
||||
func (d *Object) Create() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
stmt, err := db.Prepare("INSERT INTO " + d.tablename + "(name, created_at, updated_at) values(?, ?, ?)")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
result, err := stmt.Exec(d.Name, d.CreatedAt, d.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
d.ID = id
|
||||
return nil
|
||||
}
|
||||
|
||||
// 刪除對象
|
||||
func (d *Object) Delete() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
stmt, err := db.Prepare("DELETE FROM " + d.tablename + " WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(d.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 更新對象
|
||||
func (d *Object) Update() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
stmt, err := db.Prepare("UPDATE " + d.tablename + " SET name = ?, updated_at = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(d.Name, d.UpdatedAt, d.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 獲取對象
|
||||
func (d *Object) Get() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
stmt, err := db.Prepare("SELECT * FROM " + d.tablename + " WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
row := stmt.QueryRow(d.ID)
|
||||
err = row.Scan(&d.ID, &d.Name, &d.CreatedAt, &d.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 獲取所有對象
|
||||
func (d *Object) GetAll() ([]Object, error) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
stmt, err := db.Prepare("SELECT * FROM " + d.tablename)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer stmt.Close()
|
||||
rows, err := stmt.Query()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var list []Object
|
||||
for rows.Next() {
|
||||
var item Object
|
||||
err = rows.Scan(&item.ID, &item.Name, &item.CreatedAt, &item.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
list = append(list, item)
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
|
||||
// 獲取分頁對象
|
||||
func (d *Object) GetPage(page int64, page_size int64) (ListView, error) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return ListView{}, err
|
||||
}
|
||||
stmt, err := db.Prepare("SELECT * FROM " + d.tablename + " LIMIT ?, ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return ListView{}, err
|
||||
}
|
||||
defer stmt.Close()
|
||||
rows, err := stmt.Query((page-1)*page_size, page_size)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return ListView{}, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var list []interface{}
|
||||
for rows.Next() {
|
||||
var item Object
|
||||
err = rows.Scan(&item.ID, &item.Name, &item.CreatedAt, &item.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return ListView{}, err
|
||||
}
|
||||
list = append(list, item)
|
||||
}
|
||||
var listview ListView
|
||||
listview.Code = 0
|
||||
listview.Page = page
|
||||
listview.PageSize = page_size
|
||||
listview.List = list
|
||||
return listview, nil
|
||||
}
|
||||
|
||||
// 轉換為格式化的JSON
|
||||
func (d *Object) ToJSON() []byte {
|
||||
b, err := json.MarshalIndent(d, "", " ")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil
|
||||
}
|
||||
return b
|
||||
}
|
||||
//// 查詢數據(分頁, 每頁數量, 排序, 條件, 關聯, 獲取總數)
|
||||
//func (listview *ListView) Read(name string, page int64, page_size int64) error {
|
||||
//
|
||||
// // 獲取數據庫連接
|
||||
// db, err := configs.GetDB()
|
||||
// if err != nil {
|
||||
// log.Println(err)
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// // 獲取總數
|
||||
// var total int64
|
||||
// err = db.QueryRow("SELECT COUNT(*) FROM " + name).Scan(&total)
|
||||
// if err != nil {
|
||||
// log.Println(err)
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// // 獲取數據
|
||||
// rows, err := db.Query("SELECT * FROM "+name+" LIMIT ?, ?", (page-1)*page_size, page_size)
|
||||
// if err != nil {
|
||||
// log.Println(err)
|
||||
// return err
|
||||
// }
|
||||
// defer rows.Close()
|
||||
//
|
||||
// // 將數據轉換成對象
|
||||
// switch name {
|
||||
// case "images":
|
||||
// for rows.Next() {
|
||||
// var image Image
|
||||
// err = rows.Scan(&image.ID, &image.Name, &image.CreatedAt, &image.UpdatedAt)
|
||||
// if err != nil {
|
||||
// log.Println(err)
|
||||
// return err
|
||||
// }
|
||||
// listview.List = append(listview.List, image)
|
||||
// }
|
||||
// case "models":
|
||||
// for rows.Next() {
|
||||
// var model Model
|
||||
// err = rows.Scan(&model.ID, &model.Name, &model.CreatedAt, &model.UpdatedAt)
|
||||
// if err != nil {
|
||||
// log.Println(err)
|
||||
// return err
|
||||
// }
|
||||
// listview.List = append(listview.List, model)
|
||||
// }
|
||||
// default:
|
||||
// for rows.Next() {
|
||||
// var object Object
|
||||
// err = rows.Scan(&object.ID, &object.Name, &object.CreatedAt, &object.UpdatedAt)
|
||||
// if err != nil {
|
||||
// log.Println(err)
|
||||
// return err
|
||||
// }
|
||||
// listview.List = append(listview.List, object)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 設置返回值
|
||||
// listview.Code = 0
|
||||
// listview.Page = page
|
||||
// listview.PageSize = page_size
|
||||
// listview.Total = total
|
||||
// listview.Next = total > page*page_size
|
||||
//
|
||||
// return nil
|
||||
//}
|
||||
|
144
models/Model.go
Normal file
144
models/Model.go
Normal file
@@ -0,0 +1,144 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"log"
|
||||
"main/configs"
|
||||
)
|
||||
|
||||
type Model struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"` // (lora|ckp|hyper|ti)
|
||||
TriggerWords string `json:"trigger_words"` // 觸發詞
|
||||
BaseModel string `json:"base_model"` // (SD1.5|SD2)
|
||||
ModelPath string `json:"model_path"` // 模型路徑
|
||||
Status string `json:"status"` // (waiting|running|success|error)
|
||||
Progress int `json:"progress"` // (0-100)
|
||||
Tags []string `json:"tags"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (model *Model) Create() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("INSERT INTO models(name, type, created_at, updated_at) values(?, ?, ?, ?)")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
result, err := stmt.Exec(model.Name, model.Type, model.CreatedAt, model.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
model.ID = int(id)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (model *Model) Delete() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("DELETE FROM models WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(model.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (model *Model) Update() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("UPDATE models SET name = ?, type = ?, updated_at = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(model.Name, model.Type, model.UpdatedAt, model.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (model *Model) Get() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT * FROM models WHERE id = ?", model.ID).Scan(&model.ID, &model.Name, &model.Type, &model.CreatedAt, &model.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func QueryModels(page int, pagesize int) (models []interface{}) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
rows, err := db.Query("SELECT * FROM models LIMIT ?, ?", (page-1)*pagesize, pagesize)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var model Model
|
||||
err = rows.Scan(&model.ID, &model.Name, &model.Type, &model.CreatedAt, &model.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
models = append(models, model)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CountModels() (count int) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT COUNT(*) FROM models").Scan(&count)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
141
models/Tag.go
Normal file
141
models/Tag.go
Normal file
@@ -0,0 +1,141 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"log"
|
||||
"main/configs"
|
||||
)
|
||||
|
||||
type Tag struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (tag *Tag) Create() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("INSERT INTO tags(name, created_at, updated_at) values(?, ?, ?)")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
result, err := stmt.Exec(tag.Name, tag.CreatedAt, tag.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tag.ID = int(id)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (tag *Tag) Delete() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("DELETE FROM tags WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(tag.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (tag *Tag) Update() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("UPDATE tags SET name = ?, updated_at = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(tag.Name, tag.UpdatedAt, tag.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetTags() ([]Tag, error) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer db.Close()
|
||||
rows, err := db.Query("SELECT * FROM tags")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var tags []Tag
|
||||
for rows.Next() {
|
||||
var tag Tag
|
||||
err := rows.Scan(&tag.ID, &tag.Name, &tag.CreatedAt, &tag.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
tags = append(tags, tag)
|
||||
}
|
||||
return tags, nil
|
||||
}
|
||||
|
||||
func GetTag(id int) (*Tag, error) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer db.Close()
|
||||
row := db.QueryRow("SELECT * FROM tags WHERE id = ?", id)
|
||||
var tag Tag
|
||||
err = row.Scan(&tag.ID, &tag.Name, &tag.CreatedAt, &tag.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
return &tag, nil
|
||||
}
|
||||
|
||||
func GetTagByName(name string) (*Tag, error) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer db.Close()
|
||||
row := db.QueryRow("SELECT * FROM tags WHERE name = ?", name)
|
||||
var tag Tag
|
||||
err = row.Scan(&tag.ID, &tag.Name, &tag.CreatedAt, &tag.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
return &tag, nil
|
||||
}
|
137
models/Task.go
Normal file
137
models/Task.go
Normal file
@@ -0,0 +1,137 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"log"
|
||||
"main/configs"
|
||||
)
|
||||
|
||||
type Task struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (task *Task) Create() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("INSERT INTO tasks(name, type, created_at, updated_at) values(?, ?, ?, ?)")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
result, err := stmt.Exec(task.Name, task.Type, task.CreatedAt, task.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
task.ID = int(id)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (task *Task) Delete() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("DELETE FROM tasks WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(task.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (task *Task) Update() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("UPDATE tasks SET name = ?, type = ?, updated_at = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(task.Name, task.Type, task.UpdatedAt, task.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (task *Task) Get() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT name, type, created_at, updated_at FROM tasks WHERE id = ?", task.ID).Scan(&task.Name, &task.Type, &task.CreatedAt, &task.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func QueryTasks(page int, pagesize int) (tasks []interface{}) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
rows, err := db.Query("SELECT id, name, type, created_at, updated_at FROM tasks LIMIT ?, ?", (page-1)*pagesize, pagesize)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
task := Task{}
|
||||
err := rows.Scan(&task.ID, &task.Name, &task.Type, &task.CreatedAt, &task.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
tasks = append(tasks, task)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func CountTasks() (count int) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT COUNT(*) FROM tasks").Scan(&count)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
138
models/User.go
Normal file
138
models/User.go
Normal file
@@ -0,0 +1,138 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"log"
|
||||
"main/configs"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
func (user *User) Create() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("INSERT INTO users(name, email, created_at, updated_at) values(?, ?, ?, ?)")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
result, err := stmt.Exec(user.Name, user.Email, user.CreatedAt, user.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
user.ID = int(id)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *User) Delete() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("DELETE FROM users WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(user.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *User) Update() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
stmt, err := db.Prepare("UPDATE users SET name = ?, email = ?, updated_at = ? WHERE id = ?")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec(user.Name, user.Email, user.UpdatedAt, user.ID)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *User) Get() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT name, email, created_at, updated_at FROM users WHERE id = ?", user.ID).Scan(&user.Name, &user.Email, &user.CreatedAt, &user.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (user *User) GetAll() ([]User, error) {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer db.Close()
|
||||
rows, err := db.Query("SELECT id, name, email, created_at, updated_at FROM users")
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var users []User
|
||||
for rows.Next() {
|
||||
var user User
|
||||
err := rows.Scan(&user.ID, &user.Name, &user.Email, &user.CreatedAt, &user.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return nil, err
|
||||
}
|
||||
users = append(users, user)
|
||||
}
|
||||
return users, nil
|
||||
}
|
||||
|
||||
func (user *User) GetByEmail() error {
|
||||
db, err := configs.GetDB()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
defer db.Close()
|
||||
err = db.QueryRow("SELECT id, name, email, created_at, updated_at FROM users WHERE email = ?", user.Email).Scan(&user.ID, &user.Name, &user.Email, &user.CreatedAt, &user.UpdatedAt)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user