Skip to content
Snippets Groups Projects
Commit d661fd42 authored by Christian Pointner's avatar Christian Pointner
Browse files

cloning of files works now (still WIP)

parent a7c8999c
No related branches found
No related tags found
No related merge requests found
......@@ -58,16 +58,28 @@ func (st *Store) CreateShow(name string) (show *Show, err error) {
return st.createShow(st.db, name)
}
func (st *Store) cloneFiles(tx *gorm.DB, show string) error {
// TODO:
// for file in files_of_show {
// create file in show <name> -> <dest-id>
// create hardlink for /store/base/path/<from>/<src-id> -> /store/base/path/<name>/<dest-id>
// }
func (st *Store) cloneFiles(tx *gorm.DB, name, from string) (err error) {
var files Files
if err = tx.Where("show_name = ?", from).Find(&files).Error; err != nil {
return
}
for _, file := range files {
fromFilePath := st.GetFilePath(from, file.ID)
file.ID = 0
file.ShowName = name
if err = tx.Create(&file).Error; err != nil {
return
}
if err = os.Link(fromFilePath, st.GetFilePath(name, file.ID)); err != nil {
return
}
// TODO: also clone import logs
}
return nil
}
func (st *Store) clonePlaylists(tx *gorm.DB, show string) error {
func (st *Store) clonePlaylists(tx *gorm.DB, name, from string) error {
// TODO:
// for playlist in playlist_of_show {
// create file in show <name> -> <dest-id>
......@@ -108,12 +120,12 @@ func (st *Store) CloneShow(name, from string) (show *Show, err error) {
tx.Rollback()
return nil, err
}
if err = st.cloneFiles(tx, name); err != nil {
if err = st.cloneFiles(tx, name, from); err != nil {
tx.Rollback()
os.RemoveAll(st.getShowPath(name))
return nil, err
}
if err = st.clonePlaylists(tx, name); err != nil {
if err = st.clonePlaylists(tx, name, from); err != nil {
tx.Rollback()
os.RemoveAll(st.getShowPath(name))
return nil, err
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment