package database import ( "mime/multipart" "time" "git.jmbit.de/jmb/scanfile/server/internal/store" ) type File struct { Id int64 Uuid string //used for file blob storage etc. Name string //Name of the file Description string //Any text to add to it for context MimeType string Size int64 CreatedAt time.Time `xorm:"create"` UpdatedAt time.Time `xorm:"updated"` } // Insert File to DB func (f File) Insert() error { _, err := engine.InsertOne(f) return err } // CreateFile() creates the filesystem object and the DB entry for a file func CreateFile(name string, fileData multipart.File, size int64) (File, error) { file := File{ Name: name, Size: size, } uuid, err := store.SaveFile(fileData) if err != nil { return file, err } file.Uuid = uuid file.MimeType, _ = store.GetFileType(file.Uuid) err = file.Insert() if err != nil { return file, nil } return file, nil } func FileByID(id int64) (File, error) { file := File{Id: id} success, err := engine.Get(&file) if err != nil || success == false { return file, err } return file, nil } func FileByUUID(uuid string) (File, error) { file := File{Uuid: uuid} success, err := engine.Get(&file) if err != nil || success == false { return file, err } return file, nil }