Skip to content
Snippets Groups Projects
Unverified Commit 8188319b authored by gabriellsh's avatar gabriellsh Committed by GitHub
Browse files

chore!: Remove old retention maxAge settings (#33797)

parent a2da3464
No related branches found
No related tags found
No related merge requests found
......@@ -73,19 +73,6 @@ export const createRetentionSettings = () =>
i18nDescription: 'RetentionPolicy_AppliesToChannels_Description',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_MaxAge_Channels', 30, {
type: 'int',
public: true,
hidden: true,
i18nLabel: 'RetentionPolicy_MaxAge_Channels',
enableQuery: [
{
_id: 'RetentionPolicy_AppliesToChannels',
value: true,
},
globalQuery,
],
});
await this.add('RetentionPolicy_TTL_Channels', THIRTY_DAYS, {
type: 'timespan',
......@@ -107,19 +94,6 @@ export const createRetentionSettings = () =>
i18nDescription: 'RetentionPolicy_AppliesToGroups_Description',
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_MaxAge_Groups', 30, {
type: 'int',
public: true,
hidden: true,
i18nLabel: 'RetentionPolicy_MaxAge_Groups',
enableQuery: [
{
_id: 'RetentionPolicy_AppliesToGroups',
value: true,
},
globalQuery,
],
});
await this.add('RetentionPolicy_TTL_Groups', THIRTY_DAYS, {
type: 'timespan',
......@@ -141,20 +115,6 @@ export const createRetentionSettings = () =>
enableQuery: globalQuery,
});
await this.add('RetentionPolicy_MaxAge_DMs', 30, {
type: 'int',
public: true,
hidden: true,
i18nLabel: 'RetentionPolicy_MaxAge_DMs',
enableQuery: [
{
_id: 'RetentionPolicy_AppliesToDMs',
value: true,
},
globalQuery,
],
});
await this.add('RetentionPolicy_TTL_DMs', THIRTY_DAYS, {
type: 'timespan',
public: true,
......
import { Settings } from '@rocket.chat/models';
import type { UpdateResult } from 'mongodb';
import { settings } from '../../../app/settings/server';
import { addMigration } from '../../lib/migrations';
const maxAgeSettingMap = new Map([
['RetentionPolicy_MaxAge_Channels', 'RetentionPolicy_TTL_Channels'],
['RetentionPolicy_MaxAge_Groups', 'RetentionPolicy_TTL_Groups'],
['RetentionPolicy_MaxAge_DMs', 'RetentionPolicy_TTL_DMs'],
]);
addMigration({
version: 318,
name: 'Move retention policy settings',
async up() {
const convertDaysToMs = (days: number) => days * 24 * 60 * 60 * 1000;
const promises: Array<Promise<UpdateResult>> = [];
await Settings.find(
// we have to test value to avoid updating records that were changed before this version
{ _id: { $in: Array.from(maxAgeSettingMap.keys()) }, value: { $ne: -1 } },
{ projection: { _id: 1, value: 1 } },
).forEach(({ _id, value }) => {
const newSettingId = maxAgeSettingMap.get(_id);
if (!newSettingId) {
throw new Error(`moveRetentionSetting - Setting ${_id} equivalent does not exist`);
}
const newValue = convertDaysToMs(Number(value));
promises.push(
Settings.updateOne(
{
_id: maxAgeSettingMap.get(_id),
},
{
$set: {
value: newValue,
},
},
),
);
// This is necessary because the cachedCollection is started before watchDb is initialized
const currentCache = settings.getSetting(newSettingId);
if (!currentCache) {
return;
}
settings.set({ ...currentCache, value: newValue });
});
await Promise.all(promises);
await Settings.deleteMany({ _id: { $in: Array.from(maxAgeSettingMap.keys()) } });
},
});
import { Settings } from '@rocket.chat/models';
import type { UpdateResult } from 'mongodb';
import { upsertPermissions } from '../../../app/authorization/server/functions/upsertPermissions';
import { settings } from '../../../app/settings/server';
import { migrateDatabase, onServerVersionChange } from '../../lib/migrations';
import { ensureCloudWorkspaceRegistered } from '../cloudRegistration';
......@@ -10,57 +6,11 @@ const { MIGRATION_VERSION = 'latest' } = process.env;
const [version, ...subcommands] = MIGRATION_VERSION.split(',');
const maxAgeSettingMap = new Map([
['RetentionPolicy_MaxAge_Channels', 'RetentionPolicy_TTL_Channels'],
['RetentionPolicy_MaxAge_Groups', 'RetentionPolicy_TTL_Groups'],
['RetentionPolicy_MaxAge_DMs', 'RetentionPolicy_TTL_DMs'],
]);
const moveRetentionSetting = async () => {
const convertDaysToMs = (days: number) => days * 24 * 60 * 60 * 1000;
const promises: Array<Promise<UpdateResult>> = [];
await Settings.find(
{ _id: { $in: Array.from(maxAgeSettingMap.keys()) }, value: { $ne: -1 } },
{ projection: { _id: 1, value: 1 } },
).forEach(({ _id, value }) => {
const newSettingId = maxAgeSettingMap.get(_id);
if (!newSettingId) {
throw new Error(`moveRetentionSetting - Setting ${_id} equivalent does not exist`);
}
const newValue = convertDaysToMs(Number(value));
promises.push(
Settings.updateOne(
{
_id: maxAgeSettingMap.get(_id),
},
{
$set: {
value: newValue,
},
},
),
);
const currentCache = settings.getSetting(newSettingId);
if (!currentCache) {
return;
}
settings.set({ ...currentCache, value: newValue });
});
await Promise.all(promises);
await Settings.updateMany({ _id: { $in: Array.from(maxAgeSettingMap.keys()) } }, { $set: { value: -1 } });
};
export const performMigrationProcedure = async (): Promise<void> => {
await migrateDatabase(version === 'latest' ? version : parseInt(version), subcommands);
// perform operations when the server is starting with a different version
await onServerVersionChange(async () => {
await upsertPermissions();
await ensureCloudWorkspaceRegistered();
await moveRetentionSetting();
});
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment