diff options
author | Daniel Schalla <daniel@schalla.me> | 2018-06-25 18:12:59 +0200 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2018-06-25 12:12:59 -0400 |
commit | ecefa6cdd1e7376046bbec82c1b47f7756fea646 (patch) | |
tree | d1cb2486e344c1bb93353020713b9eb2146a5b6f /store/sqlstore | |
parent | fc158fce907b602bbde3babfadfd1a04d1dde31e (diff) | |
download | chat-ecefa6cdd1e7376046bbec82c1b47f7756fea646.tar.gz chat-ecefa6cdd1e7376046bbec82c1b47f7756fea646.tar.bz2 chat-ecefa6cdd1e7376046bbec82c1b47f7756fea646.zip |
Implementation of File Exists Function; Delete FileInfos upon Permanent User Delete (#8958)
Check if file was deleted on FS
Warning message if file couldnt be removed
Diffstat (limited to 'store/sqlstore')
-rw-r--r-- | store/sqlstore/file_info_store.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/store/sqlstore/file_info_store.go b/store/sqlstore/file_info_store.go index 7559640c8..824e41583 100644 --- a/store/sqlstore/file_info_store.go +++ b/store/sqlstore/file_info_store.go @@ -177,6 +177,30 @@ func (fs SqlFileInfoStore) GetForPost(postId string, readFromMaster bool, allowF }) } +func (fs SqlFileInfoStore) GetForUser(userId string) store.StoreChannel { + return store.Do(func(result *store.StoreResult) { + var infos []*model.FileInfo + + dbmap := fs.GetReplica() + + if _, err := dbmap.Select(&infos, + `SELECT + * + FROM + FileInfo + WHERE + CreatorId = :CreatorId + AND DeleteAt = 0 + ORDER BY + CreateAt`, map[string]interface{}{"CreatorId": userId}); err != nil { + result.Err = model.NewAppError("SqlFileInfoStore.GetForPost", + "store.sql_file_info.get_for_user_id.app_error", nil, "creator_id="+userId+", "+err.Error(), http.StatusInternalServerError) + } else { + result.Data = infos + } + }) +} + func (fs SqlFileInfoStore) AttachToPost(fileId, postId string) store.StoreChannel { return store.Do(func(result *store.StoreResult) { if _, err := fs.GetMaster().Exec( @@ -246,3 +270,22 @@ func (s SqlFileInfoStore) PermanentDeleteBatch(endTime int64, limit int64) store } }) } + +func (s SqlFileInfoStore) PermanentDeleteByUser(userId string) store.StoreChannel { + return store.Do(func(result *store.StoreResult) { + query := "DELETE from FileInfo WHERE CreatorId = :CreatorId" + + sqlResult, err := s.GetMaster().Exec(query, map[string]interface{}{"CreatorId": userId}) + if err != nil { + result.Err = model.NewAppError("SqlFileInfoStore.PermanentDeleteByUser", "store.sql_file_info.PermanentDeleteByUser.app_error", nil, ""+err.Error(), http.StatusInternalServerError) + } else { + rowsAffected, err1 := sqlResult.RowsAffected() + if err1 != nil { + result.Err = model.NewAppError("SqlFileInfoStore.PermanentDeleteByUser", "store.sql_file_info.PermanentDeleteByUser.app_error", nil, ""+err.Error(), http.StatusInternalServerError) + result.Data = int64(0) + } else { + result.Data = rowsAffected + } + } + }) +} |