后端数据库offset修复

This commit is contained in:
2021-05-21 16:33:46 +08:00
parent 6cf6d6a142
commit ec0ccd2089
2 changed files with 18 additions and 15 deletions

View File

@@ -36,13 +36,13 @@ type ResetRequest struct {
type SearchFilesRequest struct { type SearchFilesRequest struct {
Filename string `json:"filename"` Filename string `json:"filename"`
Limit int64 `json:"limit"` Limit int64 `json:"limit"`
Offest int64 `json:"offest"` Offset int64 `json:"offest"`
} }
type SearchFoldersRequest struct { type SearchFoldersRequest struct {
Foldername string `json:"foldername"` Foldername string `json:"foldername"`
Limit int64 `json:"limit"` Limit int64 `json:"limit"`
Offest int64 `json:"offest"` Offset int64 `json:"offest"`
} }
type SearchFilesRespond struct { type SearchFilesRespond struct {
@@ -184,7 +184,7 @@ func (api *API) HandleSearchFiles(w http.ResponseWriter, r *http.Request) {
searchFilesRespond := &SearchFilesRespond{} searchFilesRespond := &SearchFilesRespond{}
searchFilesRespond.Files, err = api.Db.SearchFiles(searchFilesRequest.Filename, searchFilesRequest.Limit, searchFilesRequest.Limit) searchFilesRespond.Files, err = api.Db.SearchFiles(searchFilesRequest.Filename, searchFilesRequest.Limit, searchFilesRequest.Offset)
if err != nil { if err != nil {
api.HandleError(w, r, err) api.HandleError(w, r, err)
return return
@@ -213,7 +213,7 @@ func (api *API) HandleSearchFolders(w http.ResponseWriter, r *http.Request) {
searchFoldersRespond := &SearchFoldersRespond{} searchFoldersRespond := &SearchFoldersRespond{}
searchFoldersRespond.Folders, err = api.Db.SearchFolders(searchFoldersRequest.Foldername, searchFoldersRequest.Limit, searchFoldersRequest.Limit) searchFoldersRespond.Folders, err = api.Db.SearchFolders(searchFoldersRequest.Foldername, searchFoldersRequest.Limit, searchFoldersRequest.Offset)
if err != nil { if err != nil {
api.HandleError(w, r, err) api.HandleError(w, r, err)
return return
@@ -293,6 +293,7 @@ func NewAPI(dbName string, Addr string) (*API, error) {
apiMux.HandleFunc("/reset", api.HandleReset) apiMux.HandleFunc("/reset", api.HandleReset)
mux.Handle("/api/v1/", http.StripPrefix("/api/v1", apiMux)) mux.Handle("/api/v1/", http.StripPrefix("/api/v1", apiMux))
mux.Handle("/web/", http.StripPrefix("/web", http.FileServer(http.Dir("web"))))
api.token = "pwd" api.token = "pwd"

View File

@@ -13,7 +13,8 @@ import (
var initFilesTableQuery = `CREATE TABLE IF NOT EXISTS files ( var initFilesTableQuery = `CREATE TABLE IF NOT EXISTS files (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
folder_id INTEGER NOT NULL, folder_id INTEGER NOT NULL,
filename TEXT NOT NULL filename TEXT NOT NULL,
filesize INTEGER NOT NULL
);` );`
var initFoldersTableQuery = `CREATE TABLE IF NOT EXISTS folders ( var initFoldersTableQuery = `CREATE TABLE IF NOT EXISTS folders (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
@@ -22,12 +23,12 @@ var initFoldersTableQuery = `CREATE TABLE IF NOT EXISTS folders (
);` );`
var insertFolderQuery = `INSERT INTO folders (folder, foldername) VALUES (?, ?);` var insertFolderQuery = `INSERT INTO folders (folder, foldername) VALUES (?, ?);`
var findFolderQuery = `SELECT id FROM folders WHERE folder = ? LIMIT 1;` var findFolderQuery = `SELECT id FROM folders WHERE folder = ? LIMIT 1;`
var insertFileQuery = `INSERT INTO files (folder_id, filename) VALUES (?, ?);` var insertFileQuery = `INSERT INTO files (folder_id, filename, filesize) VALUES (?, ?, ?);`
var searchFilesQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername FROM files JOIN folders ON files.folder_id = folders.id WHERE filename LIKE ? LIMIT ? OFFSET ?;` var searchFilesQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM files JOIN folders ON files.folder_id = folders.id WHERE filename LIKE ? LIMIT ? OFFSET ?;`
var getFolderQuery = `SELECT folder FROM folders WHERE id = ? LIMIT 1;` var getFolderQuery = `SELECT folder FROM folders WHERE id = ? LIMIT 1;`
var dropFilesQuery = `DROP TABLE files;` var dropFilesQuery = `DROP TABLE files;`
var dropFolderQuery = `DROP TABLE folders;` var dropFolderQuery = `DROP TABLE folders;`
var getFileQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername FROM files JOIN folders ON files.folder_id = folders.id WHERE files.id = ? LIMIT 1;` var getFileQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM files JOIN folders ON files.folder_id = folders.id WHERE files.id = ? LIMIT 1;`
var searchFoldersQuery = `SELECT id, folder, foldername FROM folders WHERE foldername LIKE ? LIMIT ? OFFSET ?;` var searchFoldersQuery = `SELECT id, folder, foldername FROM folders WHERE foldername LIKE ? LIMIT ? OFFSET ?;`
type Database struct { type Database struct {
@@ -55,6 +56,7 @@ type File struct {
Folder_id int64 `json:"folder_id"` Folder_id int64 `json:"folder_id"`
Foldername string `json:"foldername"` Foldername string `json:"foldername"`
Filename string `json:"filename"` Filename string `json:"filename"`
Filesize int64 `json:"filesize"`
} }
type Folder struct { type Folder struct {
@@ -88,7 +90,7 @@ func (database *Database) GetFile(id int64) (*File, error) {
file := &File{ file := &File{
Db: database, Db: database,
} }
err := database.stmt.getFile.QueryRow(id).Scan(&file.ID, &file.Folder_id, &file.Filename, &file.Foldername) err := database.stmt.getFile.QueryRow(id).Scan(&file.ID, &file.Folder_id, &file.Filename, &file.Foldername, &file.Filesize)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -145,7 +147,7 @@ func (database *Database) Walk(root string, pattern []string) (error) {
log.Println("True", ext, info.Name()) log.Println("True", ext, info.Name())
// insert file, folder will aut created // insert file, folder will aut created
err = database.Insert(path) err = database.Insert(path, info.Size())
if err != nil { if err != nil {
return err return err
} }
@@ -183,7 +185,7 @@ func (database *Database) SearchFiles(filename string, limit int64, offset int64
var file File = File{ var file File = File{
Db: database, Db: database,
} }
err = rows.Scan(&file.ID, &file.Folder_id, &file.Filename, &file.Foldername) err = rows.Scan(&file.ID, &file.Folder_id, &file.Filename, &file.Foldername, &file.Filesize)
if err != nil { if err != nil {
return nil, errors.New("Error scanning SearchFiles " + err.Error()) return nil, errors.New("Error scanning SearchFiles " + err.Error())
} }
@@ -216,15 +218,15 @@ func (database *Database) InsertFolder(folder string) (int64, error) {
return lastInsertId, nil return lastInsertId, nil
} }
func (database *Database) InsertFile(folderId int64, filename string) (error) { func (database *Database) InsertFile(folderId int64, filename string, filesize int64) (error) {
_, err := database.stmt.insertFile.Exec(folderId, filename) _, err := database.stmt.insertFile.Exec(folderId, filename, filesize)
if err != nil { if err != nil {
return err return err
} }
return nil return nil
} }
func (database *Database) Insert(path string) (error) { func (database *Database) Insert(path string, filesize int64) (error) {
folder, filename := filepath.Split(path) folder, filename := filepath.Split(path)
folderId, err := database.FindFolder(folder) folderId, err := database.FindFolder(folder)
if err != nil { if err != nil {
@@ -233,7 +235,7 @@ func (database *Database) Insert(path string) (error) {
return err return err
} }
} }
err = database.InsertFile(folderId, filename) err = database.InsertFile(folderId, filename, filesize)
if err != nil { if err != nil {
return err return err
} }