Use sessions for file
This commit is contained in:
parent
7088b64dc8
commit
4dce70ac0a
|
@ -17,6 +17,7 @@
|
||||||
package files
|
package files
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"code.vikunja.io/api/pkg/db"
|
||||||
"io"
|
"io"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
@ -93,27 +94,44 @@ func CreateWithMime(f io.Reader, realname string, realsize uint64, a web.Auth, m
|
||||||
Mime: mime,
|
Mime: mime,
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = x.Insert(file)
|
s := db.NewSession()
|
||||||
|
defer s.Close()
|
||||||
|
|
||||||
|
_, err = s.Insert(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
_ = s.Rollback()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the file to storage with its new ID as path
|
// Save the file to storage with its new ID as path
|
||||||
err = file.Save(f)
|
err = file.Save(f)
|
||||||
|
if err != nil {
|
||||||
|
_ = s.Rollback()
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete removes a file from the DB and the file system
|
// Delete removes a file from the DB and the file system
|
||||||
func (f *File) Delete() (err error) {
|
func (f *File) Delete() (err error) {
|
||||||
deleted, err := x.Where("id = ?", f.ID).Delete(f)
|
s := db.NewSession()
|
||||||
|
defer s.Close()
|
||||||
|
|
||||||
|
deleted, err := s.Where("id = ?", f.ID).Delete(f)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
_ = s.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if deleted == 0 {
|
if deleted == 0 {
|
||||||
|
_ = s.Rollback()
|
||||||
return ErrFileDoesNotExist{FileID: f.ID}
|
return ErrFileDoesNotExist{FileID: f.ID}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = afs.Remove(f.getFileName())
|
err = afs.Remove(f.getFileName())
|
||||||
|
if err != nil {
|
||||||
|
_ = s.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user