working commit
This commit is contained in:
@@ -97,8 +97,10 @@ func (conf *Config) ReadOptions() error {
|
||||
var err error
|
||||
exename := filepath.Base(os.Args[0])
|
||||
|
||||
flag.Int64Var(&conf.Service.Port, "port", conf.Service.Port, "listen port")
|
||||
flag.BoolVar(&conf.AsDaemon, "daemon", conf.AsDaemon, "run as daemon")
|
||||
// TODO: make local scope of flags
|
||||
|
||||
//flag.Int64Var(&conf.Service.Port, "port", conf.Service.Port, "listen port")
|
||||
//flag.BoolVar(&conf.AsDaemon, "daemon", conf.AsDaemon, "run as daemon")
|
||||
|
||||
help := func() {
|
||||
fmt.Println("")
|
||||
|
||||
+13
-6
@@ -16,8 +16,8 @@ func (hand *Handler) FileExists(rctx *router.Context) {
|
||||
params := &operator.FileExistsParams{
|
||||
Filepath: filepath,
|
||||
}
|
||||
|
||||
code, res, err := hand.oper.FileExists(params)
|
||||
ctx := rctx.GetContext()
|
||||
code, res, err := hand.oper.FileExists(ctx, params)
|
||||
if err != nil {
|
||||
hand.logg.Errorf("FileExists error: %v", err)
|
||||
rctx.SetStatus(code)
|
||||
@@ -46,7 +46,9 @@ func (hand *Handler) PutFile(rctx *router.Context) {
|
||||
ContentType: contentType,
|
||||
Source: rctx.Request.Body,
|
||||
}
|
||||
code, _, err := hand.oper.PutFile(params)
|
||||
ctx := rctx.GetContext()
|
||||
|
||||
code, _, err := hand.oper.PutFile(ctx, params)
|
||||
if err != nil {
|
||||
hand.logg.Errorf("PutFile error: %v", err)
|
||||
rctx.SetStatus(code)
|
||||
@@ -64,7 +66,8 @@ func (hand *Handler) GetFile(rctx *router.Context) {
|
||||
}
|
||||
hand.logg.Debugf("filepath: %s", filepath)
|
||||
|
||||
code, res, err := hand.oper.GetFile(params)
|
||||
ctx := rctx.GetContext()
|
||||
code, res, err := hand.oper.GetFile(ctx, params)
|
||||
if err != nil {
|
||||
hand.logg.Errorf("PutFile error: %v", err)
|
||||
rctx.SetStatus(code)
|
||||
@@ -93,10 +96,12 @@ func (hand *Handler) DeleteFile(rctx *router.Context) {
|
||||
params := &operator.DeleteFileParams{
|
||||
Filepath: filepath,
|
||||
}
|
||||
code, _, err := hand.oper.DeleteFile(params)
|
||||
ctx := rctx.GetContext()
|
||||
code, _, err := hand.oper.DeleteFile(ctx, params)
|
||||
if err != nil {
|
||||
hand.logg.Errorf("GetFile error: %v", err)
|
||||
}
|
||||
|
||||
rctx.SetStatus(code)
|
||||
}
|
||||
|
||||
@@ -107,7 +112,9 @@ func (hand *Handler) ListFiles(rctx *router.Context) {
|
||||
params := &operator.ListFilesParams{
|
||||
Filepath: filepath,
|
||||
}
|
||||
code, res, err := hand.oper.ListFiles(params)
|
||||
ctx := rctx.GetContext()
|
||||
|
||||
code, res, err := hand.oper.ListFiles(ctx, params)
|
||||
if err != nil {
|
||||
hand.logg.Errorf("ListFiles error: %v", err)
|
||||
rctx.SetStatus(code)
|
||||
|
||||
+9
-7
@@ -1,10 +1,12 @@
|
||||
package maindb
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"mstore/app/descr"
|
||||
)
|
||||
|
||||
func (db *Database) InsertFile(file *descr.File) error {
|
||||
func (db *Database) InsertFile(ctx context.Context, file *descr.File) error {
|
||||
var err error
|
||||
request := `INSERT INTO file(id, collection, name, type, checksum, size, created_at, updated_at, created_by, updated_by)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)`
|
||||
@@ -16,7 +18,7 @@ func (db *Database) InsertFile(file *descr.File) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (db *Database) UpdateFileByID(fileID string, file *descr.File) error {
|
||||
func (db *Database) UpdateFileByID(ctx context.Context, fileID string, file *descr.File) error {
|
||||
var err error
|
||||
request := `UPDATE file SET id = $1, collection = $2, name = $3, type = $4, checksum = $5,
|
||||
size = $6, updated_at = $7, created_by = $8, updated_by = $9
|
||||
@@ -29,7 +31,7 @@ func (db *Database) UpdateFileByID(fileID string, file *descr.File) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (db *Database) ListFilesByCollection(collection string) ([]descr.File, error) {
|
||||
func (db *Database) ListFilesByCollection(ctx context.Context, collection string) ([]descr.File, error) {
|
||||
var err error
|
||||
request := `SELECT * FROM file WHERE collection = $1 ORDER BY collection, name`
|
||||
res := make([]descr.File, 0)
|
||||
@@ -40,7 +42,7 @@ func (db *Database) ListFilesByCollection(collection string) ([]descr.File, erro
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (db *Database) ListAllFiles() ([]descr.File, error) {
|
||||
func (db *Database) ListAllFiles(ctx context.Context) ([]descr.File, error) {
|
||||
var err error
|
||||
request := `SELECT * FROM file ORDER BY collection, name`
|
||||
res := make([]descr.File, 0)
|
||||
@@ -51,7 +53,7 @@ func (db *Database) ListAllFiles() ([]descr.File, error) {
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (db *Database) GetFileByID(fileID int64) (bool, *descr.File, error) {
|
||||
func (db *Database) GetFileByID(ctx context.Context, fileID int64) (bool, *descr.File, error) {
|
||||
var err error
|
||||
var res *descr.File
|
||||
var exists bool
|
||||
@@ -69,7 +71,7 @@ func (db *Database) GetFileByID(fileID int64) (bool, *descr.File, error) {
|
||||
return exists, res, err
|
||||
}
|
||||
|
||||
func (db *Database) GetFileByCollection(collection, name string) (bool, *descr.File, error) {
|
||||
func (db *Database) GetFileByCollection(ctx context.Context, collection, name string) (bool, *descr.File, error) {
|
||||
var err error
|
||||
var res *descr.File
|
||||
var exists bool
|
||||
@@ -89,7 +91,7 @@ func (db *Database) GetFileByCollection(collection, name string) (bool, *descr.F
|
||||
return exists, res, err
|
||||
}
|
||||
|
||||
func (db *Database) DeleteFileByCollection(collection, name string) error {
|
||||
func (db *Database) DeleteFileByCollection(ctx context.Context, collection, name string) error {
|
||||
var err error
|
||||
|
||||
request := `DELETE FROM file WHERE collection = $1 AND name = $2`
|
||||
|
||||
+14
-13
@@ -1,6 +1,7 @@
|
||||
package operator
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
@@ -30,7 +31,7 @@ func cleanFilepath(filename string) (string, error) {
|
||||
return filepath.Clean(filename), nil
|
||||
}
|
||||
|
||||
func (oper *Operator) FileExists(param *FileExistsParams) (int, *FileExistsResult, error) {
|
||||
func (oper *Operator) FileExists(ctx context.Context, param *FileExistsParams) (int, *FileExistsResult, error) {
|
||||
var err error
|
||||
code := http.StatusOK
|
||||
res := &FileExistsResult{}
|
||||
@@ -44,7 +45,7 @@ func (oper *Operator) FileExists(param *FileExistsParams) (int, *FileExistsResul
|
||||
filename := path.Base(xfilepath)
|
||||
collection := path.Dir(xfilepath)
|
||||
|
||||
exist, fileDescr, err := oper.mdb.GetFileByCollection(collection, filename)
|
||||
exist, fileDescr, err := oper.mdb.GetFileByCollection(ctx, collection, filename)
|
||||
if err != nil {
|
||||
code := http.StatusInternalServerError
|
||||
return code, res, err
|
||||
@@ -72,7 +73,7 @@ type PutFileResult struct{}
|
||||
|
||||
const defaultContentType = "application/octet-stream"
|
||||
|
||||
func (oper *Operator) PutFile(param *PutFileParams) (int, *PutFileResult, error) {
|
||||
func (oper *Operator) PutFile(ctx context.Context, param *PutFileParams) (int, *PutFileResult, error) {
|
||||
var err error
|
||||
res := &PutFileResult{}
|
||||
|
||||
@@ -108,7 +109,7 @@ func (oper *Operator) PutFile(param *PutFileParams) (int, *PutFileResult, error)
|
||||
return code, res, err
|
||||
}
|
||||
|
||||
descrExists, fileDescr, err := oper.mdb.GetFileByCollection(collection, filename)
|
||||
descrExists, fileDescr, err := oper.mdb.GetFileByCollection(ctx, collection, filename)
|
||||
if err != nil {
|
||||
code := http.StatusInternalServerError
|
||||
return code, res, err
|
||||
@@ -120,7 +121,7 @@ func (oper *Operator) PutFile(param *PutFileParams) (int, *PutFileResult, error)
|
||||
fileDescr.Checksum = checksum
|
||||
fileDescr.UpdatedAt = now
|
||||
fileDescr.Type = contentType
|
||||
err = oper.mdb.UpdateFileByID(fileDescr.ID, fileDescr)
|
||||
err = oper.mdb.UpdateFileByID(ctx, fileDescr.ID, fileDescr)
|
||||
if err != nil {
|
||||
code := http.StatusInternalServerError
|
||||
return code, res, err
|
||||
@@ -136,7 +137,7 @@ func (oper *Operator) PutFile(param *PutFileParams) (int, *PutFileResult, error)
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}
|
||||
err = oper.mdb.InsertFile(fileDescr)
|
||||
err = oper.mdb.InsertFile(ctx, fileDescr)
|
||||
if err != nil {
|
||||
code := http.StatusInternalServerError
|
||||
return code, res, err
|
||||
@@ -163,7 +164,7 @@ type GetFileResult struct {
|
||||
Source io.ReadCloser
|
||||
}
|
||||
|
||||
func (oper *Operator) GetFile(param *GetFileParams) (int, *GetFileResult, error) {
|
||||
func (oper *Operator) GetFile(ctx context.Context, param *GetFileParams) (int, *GetFileResult, error) {
|
||||
var err error
|
||||
res := &GetFileResult{}
|
||||
|
||||
@@ -179,7 +180,7 @@ func (oper *Operator) GetFile(param *GetFileParams) (int, *GetFileResult, error)
|
||||
|
||||
oper.logg.Debugf("Get file [%s] [%s]", collection, filename)
|
||||
|
||||
descrExists, fileDescr, err := oper.mdb.GetFileByCollection(collection, filename)
|
||||
descrExists, fileDescr, err := oper.mdb.GetFileByCollection(ctx, collection, filename)
|
||||
if err != nil {
|
||||
code := http.StatusInternalServerError
|
||||
return code, res, err
|
||||
@@ -209,7 +210,7 @@ type DeleteFileParams struct {
|
||||
}
|
||||
type DeleteFileResult struct{}
|
||||
|
||||
func (oper *Operator) DeleteFile(param *DeleteFileParams) (int, *DeleteFileResult, error) {
|
||||
func (oper *Operator) DeleteFile(ctx context.Context, param *DeleteFileParams) (int, *DeleteFileResult, error) {
|
||||
var err error
|
||||
res := &DeleteFileResult{}
|
||||
code := http.StatusOK
|
||||
@@ -222,13 +223,13 @@ func (oper *Operator) DeleteFile(param *DeleteFileParams) (int, *DeleteFileResul
|
||||
filename := path.Base(xfilepath)
|
||||
collection := path.Dir(xfilepath)
|
||||
|
||||
exist, _, err := oper.mdb.GetFileByCollection(collection, filename)
|
||||
exist, _, err := oper.mdb.GetFileByCollection(ctx, collection, filename)
|
||||
if err != nil {
|
||||
code = http.StatusInternalServerError
|
||||
return code, res, err
|
||||
}
|
||||
if exist {
|
||||
err = oper.mdb.DeleteFileByCollection(collection, filename)
|
||||
err = oper.mdb.DeleteFileByCollection(ctx, collection, filename)
|
||||
if err != nil {
|
||||
code = http.StatusInternalServerError
|
||||
return code, res, err
|
||||
@@ -250,7 +251,7 @@ type ListFilesResult struct {
|
||||
FileDescrs []descr.File
|
||||
}
|
||||
|
||||
func (oper *Operator) ListFiles(param *ListFilesParams) (int, *ListFilesResult, error) {
|
||||
func (oper *Operator) ListFiles(ctx context.Context, param *ListFilesParams) (int, *ListFilesResult, error) {
|
||||
var err error
|
||||
res := &ListFilesResult{
|
||||
FileDescrs: make([]descr.File, 0),
|
||||
@@ -267,7 +268,7 @@ func (oper *Operator) ListFiles(param *ListFilesParams) (int, *ListFilesResult,
|
||||
|
||||
oper.logg.Debugf("List files by %s", collection)
|
||||
|
||||
fileDescrs, err := oper.mdb.ListAllFiles()
|
||||
fileDescrs, err := oper.mdb.ListAllFiles(ctx)
|
||||
if err != nil {
|
||||
code := http.StatusInternalServerError
|
||||
return code, res, err
|
||||
|
||||
@@ -47,3 +47,7 @@ func (rctx *Context) SendText(payload string) {
|
||||
func (rctx *Context) GetHeader(key string) string {
|
||||
return rctx.Request.Header.Get(key)
|
||||
}
|
||||
|
||||
func (rctx *Context) GetContext() context.Context {
|
||||
return rctx.Request.Context()
|
||||
}
|
||||
|
||||
@@ -68,6 +68,10 @@ func (svc *Service) Build() error {
|
||||
svc.rout.Delete("/v3/api/file/{filepath}", svc.hand.DeleteFile)
|
||||
svc.rout.Get("/v3/api/files/{filepath}", svc.hand.ListFiles)
|
||||
|
||||
svc.rout.Get("/v2/", svc.hand.GetVersion)
|
||||
|
||||
svc.rout.NotFound(svc.hand.NotFound)
|
||||
|
||||
selector := svc.rout.Selector()
|
||||
for _, item := range selector.Routes {
|
||||
svc.logg.Infof("%s\t%s", item.Method, item.RawPath)
|
||||
|
||||
Reference in New Issue
Block a user