Browse Source

增加sqlite操作

master
453530270@qq.com 2 years ago
parent
commit
4d062e21ce
  1. 1
      fssc/go.mod
  2. 2
      fssc/go.sum
  3. 9
      fssc/internal/db/dbconst.go
  4. 60
      fssc/internal/db/sqlitedb.go
  5. 16
      fssc/internal/handler/webconsole.go
  6. BIN
      fssc/ups.db

1
fssc/go.mod

@ -3,6 +3,7 @@ module fssc
go 1.22.1
require (
github.com/mattn/go-sqlite3 v1.14.22
github.com/schollz/progressbar/v3 v3.14.4
github.com/urfave/cli/v2 v2.27.2
)

2
fssc/go.sum

@ -5,6 +5,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=

9
fssc/internal/db/dbconst.go

@ -0,0 +1,9 @@
package db
// 定义数据库中用的模型
type StFileInfo struct {
Id string `json:"id"`
Fpath string `json:"fpath"`
Fhash string `json:"fhash"`
Fname string `json:"fname"`
}

60
fssc/internal/db/sqlitedb.go

@ -0,0 +1,60 @@
package db
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
var SqliteDb *sql.DB
// init
func init() {
fmt.Printf("sqlite db init \n")
SqliteDb = InitSqlite()
}
// init
func InitSqlite() *sql.DB {
db, err := sql.Open("sqlite3", "./ups.db")
if err != nil {
panic(err.Error())
}
defer db.Close()
return db
}
// query
func Sqlite_query() {
}
// add
// 返回执行后的id
func Sqlite_add(f StFileInfo) int64 {
sql := "INSERT INTO f_info(fname,fpath,fhash) VALUES (?,?,?)"
// 预处理
stmt, err := SqliteDb.Prepare(sql)
if err != nil {
log.Fatalln(err)
}
// bind value
res, err := stmt.Exec(f.Fname, f.Fpath, f.Fhash)
if err != nil {
log.Fatalln(err)
}
lastid, _ := res.LastInsertId()
return lastid
}
// func (u User) Add() error {
// _, err := DBConn.Exec("insert into t_user(email, username, password, address) values(?,?,?,?)",
// u.Email, u.UserName, u.Password, u.Address)
// if err != nil {
// fmt.Println("failed to insert t_user ", err)
// return err
// }
// return err
// }

16
fssc/internal/handler/webconsole.go

@ -3,6 +3,7 @@ package handler
import (
"fmt"
"fssc/config"
"fssc/internal/db"
"fssc/internal/util"
"fssc/web"
"html/template"
@ -80,6 +81,21 @@ func WebConsole(w http.ResponseWriter, r *http.Request) {
return
}
data.Files = files
// 计算文件的hash和其他信息
for _, f := range files {
// 结构体信息
tf := db.StFileInfo{}
tf.Fname = f.Name()
tf.Fpath = filepath.Join(relpath, f.Name())
// 文件的hash
tf.Fhash = util.CalacHash(f.Name())
//add
ret := db.Sqlite_add(tf)
fmt.Printf("add ST-FileInfo is:%d\n", ret)
//log.Fatalln("add ST-FileInfo is:%d\n",ret)
}
} else {
data.FileName = filepath.Base(realFilePath)
}

BIN
fssc/ups.db

Binary file not shown.
Loading…
Cancel
Save