summaryrefslogtreecommitdiffstats
path: root/store/sqlstore
diff options
context:
space:
mode:
authorDaniel Schalla <daniel@schalla.me>2018-06-25 18:12:59 +0200
committerHarrison Healey <harrisonmhealey@gmail.com>2018-06-25 12:12:59 -0400
commitecefa6cdd1e7376046bbec82c1b47f7756fea646 (patch)
treed1cb2486e344c1bb93353020713b9eb2146a5b6f /store/sqlstore
parentfc158fce907b602bbde3babfadfd1a04d1dde31e (diff)
downloadchat-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.go43
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
+ }
+ }
+ })
+}