mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
* pre-checkout commit * add API endpoints for retention policies * allow deleting multiple teams/channels from a policy in a single request * pre-checkout commit * add auditing in API functions * add permission checks * update the store layers * update storetest * add check constraint on PostDuration column * pre-checkout commit * add query to delete posts under the scope of a granular retention policy * add suggestions from sbishel * allow clients to specify channels/teams when creating a new policy * remove foreign keys referencing Channels and Teams tables * add checks for whether teams and channels exist * pre-checkout commit * remove data referencing the Posts table * pre-checkout commit * write data store tests * sort results of buildGetPoliciesQuery * add missing test cases for teams * pre-checkout commit * add Client4 methods for data retention policy endpoints * add uint and uint64 to app/layer_generators * make granular policies override global policies * fix lint errors * pre-checkout commit * add license to top of files * add tests for data store layer * add missing test cases for store layer * run make i18n-extract * add query to delete ChannelMemberHistory * work in progress * add test for old reply to old post * fix lint error * use COALESCE on each Posts column * begin implementing orphaned rows worker * split PR * pre-checkout commit * use RetentionPolicyWithTeamAndChannelCounts * update app and api layers * run make i18n-extract * add RetentionPolicy to retrylayer_test.go * Revert "split PR" This reverts commitb316f03dd3. * fix errors caused by revert * add suggestions from sbishel * fix copy-paste error * fix lint errors * pre-checkout commit * add function to delete orphaned rows * use -1 for infinite retention * remove check constraint * copy i18n entries from master * re-run tests with newer enterprise branch * add team data to channel list * add search for channels and teams in a policy * add store tests for channel and team search * add suggestions from mkraft * run make einterfaces-mocks * fix lint errors * add suggestions from mkraft * move removeOrphanedRows method to wireup branch * Revert "move removeOrphanedRows method to wireup branch" This reverts commit94605c9b4a. * use DeleteOrphanedRows where possible * run make i18n-extract * use COMPLIANCE permissions * run make migrations-bindadta * clean up teams before test * fix tests for TestRetentionPolicyStore * add API endpoints for mobile * fix lint error * fix some of the lint errors * move user/data_retention endpoints to data_retention.go * Revert "fix some of the lint errors" This reverts commitb5b2dc2756. * add exclude_policy_constrained parameter for /channels and /teams * fix lint errors * add policy_id field to GET endpoints for channels and teams * use PolicyWithTeamID in RetentionPolicy layer * fix lint errors * run make i18n-extract * update mock call in telemetry_test.go * return status:OK in JSON instead of 204 * pre-checkout commit * add policy_id field on channels/teams * fix lint errors * use sq.Eq instead of '?' * use new subsection permissions * update channels and teams endpoints to use new subsection permissions * add extra search opts for channels in a policy * fix lint errors * allow negative post duration in patch * remove DELETE FROM query in retention policy tests * use *int64 for PostDuration * re-run CI tests * use 3-step deletion strategy for each table * fix lint errors * run make store-layers * re-run CI tests * add test with channel, team and global policies * use common function for SQL queries * add pagination test * use struct for args to common SQL function * fix lint errors * run make i18n-extract * check if Channels.TeamId is "" or nil * use three OR clauses * write separate genericRetentionPoliciesDeletion function * add config setting for BatchSize * add telemetry for BatchSize * use feature flag * add old i18n messages back in * re-run CI tests * update call signature in storetest * MM-30831: Adds constant for retention default batch size. * MM-30831: Removes comment re: optimization. * MM-30831: Converts days to milliseconds. * MM-30831: Reverts change to test. * Revert "MM-30831: Reverts change to test." This reverts commit6d14275a1c. * Revert "MM-30831: Converts days to milliseconds." This reverts commita0cb6ec09d. * MM-30831: Fixes tests. * MM-30381: Fix for change to method sig. Co-authored-by: Max Erenberg <max.erenberg@mattermost.com> Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Martin Kraft <martin@upspin.org>
133 lines
3.5 KiB
Go
133 lines
3.5 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package model
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
)
|
|
|
|
type GlobalRetentionPolicy struct {
|
|
MessageDeletionEnabled bool `json:"message_deletion_enabled"`
|
|
FileDeletionEnabled bool `json:"file_deletion_enabled"`
|
|
MessageRetentionCutoff int64 `json:"message_retention_cutoff"`
|
|
FileRetentionCutoff int64 `json:"file_retention_cutoff"`
|
|
}
|
|
|
|
type RetentionPolicy struct {
|
|
ID string `db:"Id" json:"id"`
|
|
DisplayName string `json:"display_name"`
|
|
PostDuration *int64 `json:"post_duration"`
|
|
}
|
|
|
|
type RetentionPolicyWithTeamAndChannelIDs struct {
|
|
RetentionPolicy
|
|
TeamIDs []string `json:"team_ids"`
|
|
ChannelIDs []string `json:"channel_ids"`
|
|
}
|
|
|
|
type RetentionPolicyWithTeamAndChannelCounts struct {
|
|
RetentionPolicy
|
|
ChannelCount int64 `json:"channel_count"`
|
|
TeamCount int64 `json:"team_count"`
|
|
}
|
|
|
|
type RetentionPolicyChannel struct {
|
|
PolicyID string `db:"PolicyId"`
|
|
ChannelID string `db:"ChannelId"`
|
|
}
|
|
|
|
type RetentionPolicyTeam struct {
|
|
PolicyID string `db:"PolicyId"`
|
|
TeamID string `db:"TeamId"`
|
|
}
|
|
|
|
type RetentionPolicyWithTeamAndChannelCountsList struct {
|
|
Policies []*RetentionPolicyWithTeamAndChannelCounts `json:"policies"`
|
|
TotalCount int64 `json:"total_count"`
|
|
}
|
|
|
|
type RetentionPolicyForTeam struct {
|
|
TeamID string `db:"Id" json:"team_id"`
|
|
PostDuration int64 `json:"post_duration"`
|
|
}
|
|
|
|
type RetentionPolicyForTeamList struct {
|
|
Policies []*RetentionPolicyForTeam `json:"policies"`
|
|
TotalCount int64 `json:"total_count"`
|
|
}
|
|
|
|
type RetentionPolicyForChannel struct {
|
|
ChannelID string `db:"Id" json:"channel_id"`
|
|
PostDuration int64 `json:"post_duration"`
|
|
}
|
|
|
|
type RetentionPolicyForChannelList struct {
|
|
Policies []*RetentionPolicyForChannel `json:"policies"`
|
|
TotalCount int64 `json:"total_count"`
|
|
}
|
|
|
|
type RetentionPolicyCursor struct {
|
|
ChannelPoliciesDone bool
|
|
TeamPoliciesDone bool
|
|
GlobalPoliciesDone bool
|
|
}
|
|
|
|
func (rp *GlobalRetentionPolicy) ToJson() []byte {
|
|
b, _ := json.Marshal(rp)
|
|
return b
|
|
}
|
|
|
|
func GlobalRetentionPolicyFromJson(data io.Reader) *GlobalRetentionPolicy {
|
|
var grp *GlobalRetentionPolicy
|
|
json.NewDecoder(data).Decode(&grp)
|
|
return grp
|
|
}
|
|
|
|
func RetentionPolicyWithTeamAndChannelCountsFromJson(data io.Reader) (*RetentionPolicyWithTeamAndChannelCounts, error) {
|
|
var rp RetentionPolicyWithTeamAndChannelCounts
|
|
err := json.NewDecoder(data).Decode(&rp)
|
|
return &rp, err
|
|
}
|
|
|
|
func (rp *RetentionPolicyWithTeamAndChannelCounts) ToJson() []byte {
|
|
b, _ := json.Marshal(rp)
|
|
return b
|
|
}
|
|
|
|
func RetentionPolicyWithTeamAndChannelCountsListFromJson(data io.Reader) (*RetentionPolicyWithTeamAndChannelCountsList, error) {
|
|
var rpList *RetentionPolicyWithTeamAndChannelCountsList
|
|
err := json.NewDecoder(data).Decode(&rpList)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return rpList, nil
|
|
}
|
|
|
|
func (rpList *RetentionPolicyWithTeamAndChannelCountsList) ToJson() []byte {
|
|
b, _ := json.Marshal(rpList)
|
|
return b
|
|
}
|
|
|
|
func RetentionPolicyWithTeamAndChannelIdsFromJson(data io.Reader) (*RetentionPolicyWithTeamAndChannelIDs, error) {
|
|
var rp *RetentionPolicyWithTeamAndChannelIDs
|
|
err := json.NewDecoder(data).Decode(&rp)
|
|
return rp, err
|
|
}
|
|
|
|
func (rp *RetentionPolicyWithTeamAndChannelIDs) ToJson() []byte {
|
|
b, _ := json.Marshal(rp)
|
|
return b
|
|
}
|
|
|
|
func (lst *RetentionPolicyForTeamList) ToJson() []byte {
|
|
b, _ := json.Marshal(lst)
|
|
return b
|
|
}
|
|
|
|
func (lst *RetentionPolicyForChannelList) ToJson() []byte {
|
|
b, _ := json.Marshal(lst)
|
|
return b
|
|
}
|