修复 offset bug
前后端添加 get_files_in_folder API
更改拼写 respond 为 response
添加 HTTP GET 方法获取文件
一个根组件
前端支持搜索文件夹,多页浏览
前端支持播放音乐
前端支持更新和重置数据库
前端全局唯一音乐播放器
This commit is contained in:
2021-05-22 02:50:15 +08:00
parent 47619888b3
commit c9b7d598b2
4 changed files with 360 additions and 25 deletions

View File

@@ -30,6 +30,7 @@ var dropFilesQuery = `DROP TABLE files;`
var dropFolderQuery = `DROP TABLE folders;`
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 getFilesInFolderQuery = `SELECT id, filename, filesize FROM files WHERE folder_id = ? LIMIT ? OFFSET ?;`
type Database struct {
sqlConn *sql.DB
@@ -48,6 +49,7 @@ type Stmt struct {
dropFolder *sql.Stmt
getFile *sql.Stmt
searchFolders *sql.Stmt
getFilesInFolder *sql.Stmt
}
type File struct {
@@ -66,6 +68,27 @@ type Folder struct {
Foldername string `json:"foldername"`
}
func (database *Database) GetFilesInFolder(folder_id int64, limit int64, offset int64) ([]File, error) {
rows, err := database.stmt.getFilesInFolder.Query(folder_id, limit, offset)
if err != nil {
return nil, err
}
defer rows.Close()
files := make([]File, 0)
for rows.Next() {
file := File{
Db: database,
Folder_id: folder_id,
}
err = rows.Scan(&file.ID, &file.Filename, &file.Filesize)
if err != nil {
return nil, err
}
files = append(files, file)
}
return files, nil
}
func (database *Database) SearchFolders(foldername string, limit int64, offset int64) ([]Folder, error) {
rows, err := database.stmt.searchFolders.Query("%"+foldername+"%", limit, offset)
if err != nil {
@@ -323,6 +346,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
return nil, err
}
// init getFilesInFolder stmt
stmt.getFilesInFolder, err = sqlConn.Prepare(getFilesInFolderQuery)
if err != nil {
return nil, err
}
return stmt, err
}