mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
76 lines
1.6 KiB
Go
76 lines
1.6 KiB
Go
package model
|
|
|
|
import (
|
|
"crawlab/database"
|
|
"crawlab/utils"
|
|
"github.com/apex/log"
|
|
"github.com/globalsign/mgo/bson"
|
|
"os"
|
|
"runtime/debug"
|
|
"time"
|
|
)
|
|
|
|
type GridFs struct {
|
|
Id bson.ObjectId `json:"_id" bson:"_id"`
|
|
ChunkSize int32 `json:"chunk_size" bson:"chunkSize"`
|
|
UploadDate time.Time `json:"upload_date" bson:"uploadDate"`
|
|
Length int32 `json:"length" bson:"length"`
|
|
Md5 string `json:"md_5" bson:"md5"`
|
|
Filename string `json:"filename" bson:"filename"`
|
|
}
|
|
|
|
type File struct {
|
|
Name string `json:"name"`
|
|
Path string `json:"path"`
|
|
IsDir bool `json:"is_dir"`
|
|
Size int64 `json:"size"`
|
|
}
|
|
|
|
func (f *GridFs) Remove() {
|
|
s, gf := database.GetGridFs("files")
|
|
defer s.Close()
|
|
if err := gf.RemoveId(f.Id); err != nil {
|
|
log.Errorf("remove file id error: %s, id: %s", err.Error(), f.Id.Hex())
|
|
debug.PrintStack()
|
|
}
|
|
}
|
|
|
|
func GetAllGridFs() []*GridFs {
|
|
s, gf := database.GetGridFs("files")
|
|
defer s.Close()
|
|
|
|
var files []*GridFs
|
|
if err := gf.Find(nil).All(&files); err != nil {
|
|
log.Errorf("get all files error: {}", err.Error())
|
|
debug.PrintStack()
|
|
return nil
|
|
}
|
|
return files
|
|
}
|
|
|
|
func GetGridFs(id bson.ObjectId) *GridFs {
|
|
s, gf := database.GetGridFs("files")
|
|
defer s.Close()
|
|
|
|
var gfFile GridFs
|
|
err := gf.Find(bson.M{"_id": id}).One(&gfFile)
|
|
if err != nil {
|
|
log.Errorf("get gf file error: %s, file_id: %s", err.Error(), id.Hex())
|
|
debug.PrintStack()
|
|
return nil
|
|
}
|
|
return &gfFile
|
|
}
|
|
|
|
func RemoveFile(path string) error {
|
|
if !utils.Exists(path) {
|
|
log.Info("file not found: " + path)
|
|
debug.PrintStack()
|
|
return nil
|
|
}
|
|
if err := os.RemoveAll(path); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|