4 changed files with 218 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||||
|
package core |
||||
|
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
"net/http" |
||||
|
|
||||
|
"github.com/jmoiron/sqlx" |
||||
|
) |
||||
|
|
||||
|
// 系统设置
|
||||
|
func Settdb(w http.ResponseWriter, r *http.Request) { |
||||
|
// 检查数据表是否存在
|
||||
|
scdb, err := sqlx.Open("sqlite3", "./sc.db") |
||||
|
if err != nil { |
||||
|
fmt.Printf("Failed to open database: %v\n", err) |
||||
|
return |
||||
|
} |
||||
|
defer scdb.Close() |
||||
|
//创建服务表
|
||||
|
sts := ` |
||||
|
CREATE TABLE sc_server ( |
||||
|
id INTEGER PRIMARY KEY NOT NULL PRIMARY KEY AUTOINCREMENT, |
||||
|
scname TEXT NOT NULL, |
||||
|
addr TEXT NOT NULL, |
||||
|
port TEXT NOT NULL, |
||||
|
token TEXT NOT NULL, |
||||
|
status INTEGER NOT NULL |
||||
|
);` |
||||
|
// 执行建表语句
|
||||
|
_, err = scdb.Exec(sts) |
||||
|
if err != nil { |
||||
|
fmt.Printf("Failed to create database table: %v\n", err) |
||||
|
return |
||||
|
} |
||||
|
fmt.Printf("Successfully created database table! \n") |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,171 @@ |
|||||
|
package db |
||||
|
|
||||
|
import "fmt" |
||||
|
|
||||
|
// 创建服务器数据库
|
||||
|
func CreateScdb() { |
||||
|
// 建表语句
|
||||
|
sts := ` |
||||
|
CREATE TABLE sc_server ( |
||||
|
id INTEGER PRIMARY KEY NOT NULL PRIMARY KEY AUTOINCREMENT, |
||||
|
scname TEXT NOT NULL, |
||||
|
addr TEXT NOT NULL, |
||||
|
port TEXT NOT NULL, |
||||
|
token TEXT NOT NULL, |
||||
|
status INTEGER NOT NULL |
||||
|
);` |
||||
|
// 执行建表语句
|
||||
|
_, err = db.Exec(sts) |
||||
|
if err != nil { |
||||
|
fmt.Printf("Failed to create database table: %v\n", err) |
||||
|
return |
||||
|
} |
||||
|
fmt.Printf("Successfully created database table! \n") |
||||
|
} |
||||
|
|
||||
|
//记录服务器的信息
|
||||
|
func AddServerInfo(info *StServerInfo) error { |
||||
|
// 插入语句
|
||||
|
stmt, err := db.Prepare("INSERT INTO s_info (id, addr, port, token) VALUES (?, ?, ?, ?)") |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
defer stmt.Close() |
||||
|
// 执行插入语句
|
||||
|
_, err = stmt.Exec(info.Id, info.Addr, info.Port, info.Token) |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
// 查询所有的记录
|
||||
|
func GetlScList() (sclist []StFileInfo) { |
||||
|
// 结果集
|
||||
|
sclist = make([]StFileInfo, 0) |
||||
|
|
||||
|
// 查询语句
|
||||
|
rows, err := db.Query("SELECT * FROM f_info WHERE fpbs = ?") |
||||
|
//
|
||||
|
if err != nil { |
||||
|
fmt.Printf("Failed to query data: %v\n", err) |
||||
|
return |
||||
|
} |
||||
|
// FOR loop
|
||||
|
for rows.Next() { |
||||
|
// var weight float64
|
||||
|
var st StFileInfo |
||||
|
err = rows.Scan(&st.Id, &st.Fname, &st.Fpath, &st.Fhash) |
||||
|
if err != nil { |
||||
|
fmt.Printf("Failed to read data: %v\n", err) |
||||
|
continue |
||||
|
} |
||||
|
sclist = append(sclist, st) |
||||
|
} |
||||
|
return sclist |
||||
|
} |
||||
|
|
||||
|
// 获取服务器信息
|
||||
|
func GetServerInfo(id string) (*StServerInfo, error) { |
||||
|
// 查询语句
|
||||
|
stmt, err := db.Prepare("SELECT id, addr, port, token FROM s_info WHERE id = ?") |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
defer stmt.Close() |
||||
|
// 执行查询语句
|
||||
|
row := stmt.QueryRow(id) |
||||
|
// 定义一个结构体变量
|
||||
|
var info StServerInfo |
||||
|
// 扫描查询结果
|
||||
|
err = row.Scan(&info.Id, &info.Addr, &info.Port, &info.Token) |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
return &info, nil |
||||
|
} |
||||
|
|
||||
|
// 更新服务器信息
|
||||
|
func UpdateServerInfo(info *StServerInfo) error { |
||||
|
// 更新语句
|
||||
|
stmt, err := db.Prepare("UPDATE s_info SET addr = ?, port = ?, token = ? WHERE id = ?") |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
defer stmt.Close() |
||||
|
// 执行更新语句
|
||||
|
_, err = stmt.Exec(info.Addr, info.Port, info.Token, info.Id) |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
// 删除服务器信息
|
||||
|
func DeleteServerInfo(id string) error { |
||||
|
// 删除语句
|
||||
|
stmt, err := db.Prepare("DELETE FROM s_info WHERE id = ?") |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
defer stmt.Close() |
||||
|
// 执行删除语句
|
||||
|
_, err = stmt.Exec(id) |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
// 获取所有服务器信息
|
||||
|
func GetAllServerInfo() ([]*StServerInfo, error) { |
||||
|
// 查询语句
|
||||
|
stmt, err := db.Prepare("SELECT id, addr, port, token FROM s_info") |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
defer stmt.Close() |
||||
|
// 执行查询语句
|
||||
|
rows, err := stmt.Query() |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
defer rows.Close() |
||||
|
// 定义一个结构体变量
|
||||
|
var info StServerInfo |
||||
|
// 定义一个切片变量
|
||||
|
var infos []*StServerInfo |
||||
|
// 遍历查询结果
|
||||
|
for rows.Next() { |
||||
|
// 扫描查询结果
|
||||
|
err = rows.Scan(&info.Id, &info.Addr, &info.Port, &info.Token) |
||||
|
if err != nil { |
||||
|
return nil, err |
||||
|
} |
||||
|
// 追加到切片变量
|
||||
|
infos = append(infos, &info) |
||||
|
} |
||||
|
// 返回切片变量
|
||||
|
return infos, nil |
||||
|
} |
||||
|
|
||||
|
// 检查服务器是否存在
|
||||
|
func CheckServerExist(id string) (bool, error) { |
||||
|
// 查询语句
|
||||
|
stmt, err := db.Prepare("SELECT id FROM s_info WHERE id = ?") |
||||
|
if err != nil { |
||||
|
return false, err |
||||
|
} |
||||
|
defer stmt.Close() |
||||
|
// 执行查询语句
|
||||
|
row := stmt.QueryRow(id) |
||||
|
// 定义一个结构体变量
|
||||
|
var info StServerInfo |
||||
|
// 扫描查询结果
|
||||
|
err = row.Scan(&info.Id) |
||||
|
if err != nil { |
||||
|
return false, err |
||||
|
} |
||||
|
// 返回结果
|
||||
|
return true, nil |
||||
|
} |
||||
Binary file not shown.
Loading…
Reference in new issue