/api/v1/get_random_files
This commit is contained in:
@@ -64,6 +64,22 @@ type GetFilesInFolderResponse struct {
|
|||||||
Files *[]database.File `json:"files"`
|
Files *[]database.File `json:"files"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetRandomFilesResponse struct {
|
||||||
|
Files *[]database.File `json:"files"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *API) HandleGetRandomFiles(w http.ResponseWriter, r *http.Request) {
|
||||||
|
files, err := api.Db.GetRandomFiles(10);
|
||||||
|
if err != nil {
|
||||||
|
api.HandleError(w, r, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
getRandomFilesResponse := &GetRandomFilesResponse{
|
||||||
|
Files: &files,
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(getRandomFilesResponse)
|
||||||
|
}
|
||||||
|
|
||||||
func (api *API) HandleGetFilesInFolder(w http.ResponseWriter, r *http.Request) {
|
func (api *API) HandleGetFilesInFolder(w http.ResponseWriter, r *http.Request) {
|
||||||
getFilesInFolderRequest := &GetFilesInFolderRequest{
|
getFilesInFolderRequest := &GetFilesInFolderRequest{
|
||||||
Folder_id: -1,
|
Folder_id: -1,
|
||||||
@@ -358,6 +374,7 @@ func NewAPI(dbName string, Addr string) (*API, error) {
|
|||||||
apiMux.HandleFunc("/search_files", api.HandleSearchFiles)
|
apiMux.HandleFunc("/search_files", api.HandleSearchFiles)
|
||||||
apiMux.HandleFunc("/search_folders", api.HandleSearchFolders)
|
apiMux.HandleFunc("/search_folders", api.HandleSearchFolders)
|
||||||
apiMux.HandleFunc("/get_files_in_folder", api.HandleGetFilesInFolder)
|
apiMux.HandleFunc("/get_files_in_folder", api.HandleGetFilesInFolder)
|
||||||
|
apiMux.HandleFunc("/get_random_files", api.HandleGetRandomFiles)
|
||||||
// below needs token
|
// below needs token
|
||||||
apiMux.HandleFunc("/walk", api.HandleWalk)
|
apiMux.HandleFunc("/walk", api.HandleWalk)
|
||||||
apiMux.HandleFunc("/reset", api.HandleReset)
|
apiMux.HandleFunc("/reset", api.HandleReset)
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ 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 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 ?;`
|
||||||
var getFilesInFolderQuery = `SELECT id, filename, filesize FROM files WHERE folder_id = ? LIMIT ? OFFSET ?;`
|
var getFilesInFolderQuery = `SELECT id, filename, filesize FROM files WHERE folder_id = ? LIMIT ? OFFSET ?;`
|
||||||
|
var getRandomFilesQuery = `SELECT files.id, files.folder_id, files.filename, folders.foldername, files.filesize FROM files JOIN folders on files.folder_id = folders.id ORDER BY RANDOM() LIMIT ?;`
|
||||||
|
|
||||||
type Database struct {
|
type Database struct {
|
||||||
sqlConn *sql.DB
|
sqlConn *sql.DB
|
||||||
@@ -50,6 +51,7 @@ type Stmt struct {
|
|||||||
getFile *sql.Stmt
|
getFile *sql.Stmt
|
||||||
searchFolders *sql.Stmt
|
searchFolders *sql.Stmt
|
||||||
getFilesInFolder *sql.Stmt
|
getFilesInFolder *sql.Stmt
|
||||||
|
getRandomFiles *sql.Stmt
|
||||||
}
|
}
|
||||||
|
|
||||||
type File struct {
|
type File struct {
|
||||||
@@ -68,6 +70,26 @@ type Folder struct {
|
|||||||
Foldername string `json:"foldername"`
|
Foldername string `json:"foldername"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (database *Database) GetRandomFiles(limit int64) ([]File, error) {
|
||||||
|
rows, err := database.stmt.getRandomFiles.Query(limit)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
files := make([]File, 0)
|
||||||
|
for rows.Next() {
|
||||||
|
file := File{
|
||||||
|
Db: database,
|
||||||
|
}
|
||||||
|
err = rows.Scan(&file.ID, &file.Folder_id, &file.Filename, &file.Foldername, &file.Filesize)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
files = append(files, file)
|
||||||
|
}
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (database *Database) GetFilesInFolder(folder_id int64, limit int64, offset int64) ([]File, error) {
|
func (database *Database) GetFilesInFolder(folder_id int64, limit int64, offset int64) ([]File, error) {
|
||||||
rows, err := database.stmt.getFilesInFolder.Query(folder_id, limit, offset)
|
rows, err := database.stmt.getFilesInFolder.Query(folder_id, limit, offset)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -352,6 +374,12 @@ func NewPreparedStatement(sqlConn *sql.DB) (*Stmt, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// init getRandomFiles
|
||||||
|
stmt.getRandomFiles, err = sqlConn.Prepare(getRandomFilesQuery)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return stmt, err
|
return stmt, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user