[MM-44489] Cloud limits: enforcing files (#20703)
* Update last accessible file time * Filter fileInfos * Set inaccessible header * Fix lint issue * Fix lint issue * Fix i18n * add nil check * Fix merge conflicts * Add helper functions to clear out inaccessible files content * Remove content for inaccessible files * Fix typo * wip * Remove InaccessibleContent field, instead use Archived * Add store tests * Add tests * Add separate funcs to ignore cloud limits * Use separate query for MySql * Use GetReplicaX Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
@@ -35,6 +35,7 @@ const (
|
||||
HeaderRequestedWith = "X-Requested-With"
|
||||
HeaderRequestedWithXML = "XMLHttpRequest"
|
||||
HeaderFirstInaccessiblePostTime = "First-Inaccessible-Post-Time"
|
||||
HeaderFirstInaccessibleFileTime = "First-Inaccessible-File-Time"
|
||||
HeaderRange = "Range"
|
||||
STATUS = "status"
|
||||
StatusOk = "OK"
|
||||
|
||||
@@ -188,3 +188,17 @@ func GetEtagForFileInfos(infos []*FileInfo) string {
|
||||
|
||||
return Etag(infos[0].PostId, maxUpdateAt)
|
||||
}
|
||||
|
||||
func (fi *FileInfo) MakeContentInaccessible() {
|
||||
if fi == nil {
|
||||
return
|
||||
}
|
||||
|
||||
fi.Archived = true
|
||||
fi.Content = ""
|
||||
fi.HasPreviewImage = false
|
||||
fi.MiniPreview = nil
|
||||
fi.Path = ""
|
||||
fi.PreviewPath = ""
|
||||
fi.ThumbnailPath = ""
|
||||
}
|
||||
|
||||
@@ -12,6 +12,8 @@ type FileInfoList struct {
|
||||
FileInfos map[string]*FileInfo `json:"file_infos"`
|
||||
NextFileInfoId string `json:"next_file_info_id"`
|
||||
PrevFileInfoId string `json:"prev_file_info_id"`
|
||||
// If there are inaccessible files, FirstInaccessibleFileTime is the time of the latest inaccessible file
|
||||
FirstInaccessibleFileTime int64 `json:"first_inaccessible_file_time"`
|
||||
}
|
||||
|
||||
func NewFileInfoList() *FileInfoList {
|
||||
|
||||
@@ -28,6 +28,7 @@ const (
|
||||
JobTypeResendInvitationEmail = "resend_invitation_email"
|
||||
JobTypeExtractContent = "extract_content"
|
||||
JobTypeLastAccessiblePost = "last_accessible_post"
|
||||
JobTypeLastAccessibleFile = "last_accessible_file"
|
||||
JobTypeUpgradeNotifyAdmin = "upgrade_notify_admin"
|
||||
JobTypeTrialNotifyAdmin = "trial_notify_admin"
|
||||
|
||||
@@ -59,6 +60,7 @@ var AllJobTypes = [...]string{
|
||||
JobTypeCloud,
|
||||
JobTypeExtractContent,
|
||||
JobTypeLastAccessiblePost,
|
||||
JobTypeLastAccessibleFile,
|
||||
}
|
||||
|
||||
type Job struct {
|
||||
|
||||
@@ -32,6 +32,7 @@ const (
|
||||
SystemFirstAdminVisitMarketplace = "FirstAdminVisitMarketplace"
|
||||
SystemFirstAdminSetupComplete = "FirstAdminSetupComplete"
|
||||
SystemLastAccessiblePostTime = "LastAccessiblePostTime"
|
||||
SystemLastAccessibleFileTime = "LastAccessibleFileTime"
|
||||
AwsMeteringReportInterval = 1
|
||||
AwsMeteringDimensionUsageHrs = "UsageHrs"
|
||||
)
|
||||
|
||||
Ссылка в новой задаче
Block a user