package models import ( "log" "main/configs" ) type Server struct { ID int `json:"id"` Name string `json:"name"` IP string `json:"ip"` Port int `json:"port"` Username string `json:"username"` Password string `json:"password"` CreatedAt string `json:"created_at"` UpdatedAt string `json:"updated_at"` } func (server *Server) Create() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() stmt, err := db.Prepare("INSERT INTO servers(name, ip, port, username, password, created_at, updated_at) values(?, ?, ?, ?, ?, ?, ?)") if err != nil { log.Println(err) return err } defer stmt.Close() result, err := stmt.Exec(server.Name, server.IP, server.Port, server.Username, server.Password, server.CreatedAt, server.UpdatedAt) if err != nil { log.Println(err) return err } id, err := result.LastInsertId() if err != nil { return err } server.ID = int(id) return nil } func (server *Server) Delete() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() stmt, err := db.Prepare("DELETE FROM servers WHERE id = ?") if err != nil { log.Println(err) return err } defer stmt.Close() _, err = stmt.Exec(server.ID) if err != nil { log.Println(err) return err } return nil } func (server *Server) Update() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() stmt, err := db.Prepare("UPDATE servers SET name = ?, ip = ?, port = ?, username = ?, password = ?, updated_at = ? WHERE id = ?") if err != nil { log.Println(err) return err } defer stmt.Close() _, err = stmt.Exec(server.Name, server.IP, server.Port, server.Username, server.Password, server.UpdatedAt, server.ID) if err != nil { log.Println(err) return err } return nil } func (server *Server) Get() error { db, err := configs.GetDB() if err != nil { log.Println(err) return err } defer db.Close() err = db.QueryRow("SELECT id, name, ip, port, username, password, created_at, updated_at FROM servers WHERE id = ?", server.ID).Scan(&server.ID, &server.Name, &server.IP, &server.Port, &server.Username, &server.Password, &server.CreatedAt, &server.UpdatedAt) if err != nil { log.Println(err) return err } return nil } func QueryServers(page int, pagesize int) (servers []interface{}) { db, err := configs.GetDB() if err != nil { log.Println(err) return } defer db.Close() rows, err := db.Query("SELECT id, name, ip, port, username, password, created_at, updated_at FROM servers ORDER BY id DESC LIMIT ?, ?", page*pagesize, pagesize) if err != nil { log.Println(err) return } defer rows.Close() for rows.Next() { server := Server{} err := rows.Scan(&server.ID, &server.Name, &server.IP, &server.Port, &server.Username, &server.Password, &server.CreatedAt, &server.UpdatedAt) if err != nil { log.Println(err) continue } servers = append(servers, server) } return } func CountServers() (count int) { db, err := configs.GetDB() if err != nil { log.Println(err) return } defer db.Close() err = db.QueryRow("SELECT COUNT(*) FROM servers").Scan(&count) if err != nil { log.Println(err) return } return }