diff --git a/src/lib/db/feature-toggle-store.ts b/src/lib/db/feature-toggle-store.ts index a24d9ef14d..0216127c09 100644 --- a/src/lib/db/feature-toggle-store.ts +++ b/src/lib/db/feature-toggle-store.ts @@ -17,6 +17,8 @@ const FEATURE_COLUMNS = [ 'created_at', 'impression_data', 'last_seen_at', + 'archived', + 'archived_at', ]; export interface FeaturesTable { @@ -29,6 +31,8 @@ export interface FeaturesTable { last_seen_at?: Date; created_at?: Date; impression_data: boolean; + archived?: boolean; + archived_at?: Date; } const TABLE = 'features'; @@ -227,9 +231,10 @@ export default class FeatureToggleStore implements IFeatureToggleStore { } async archive(name: string): Promise { + const now = new Date(); const row = await this.db(TABLE) .where({ name }) - .update({ archived: true }) + .update({ archived: true, archived_at: now }) .returning(FEATURE_COLUMNS); return this.rowToFeature(row[0]); } @@ -243,7 +248,7 @@ export default class FeatureToggleStore implements IFeatureToggleStore { async revive(name: string): Promise { const row = await this.db(TABLE) .where({ name }) - .update({ archived: false }) + .update({ archived: false, archived_at: null }) .returning(FEATURE_COLUMNS); return this.rowToFeature(row[0]); } diff --git a/src/lib/types/model.ts b/src/lib/types/model.ts index 448d19242c..9eddd4bf63 100644 --- a/src/lib/types/model.ts +++ b/src/lib/types/model.ts @@ -45,6 +45,7 @@ export interface FeatureToggleDTO { type?: string; stale?: boolean; archived?: boolean; + archivedAt?: Date; createdAt?: Date; impressionData?: boolean; } @@ -52,7 +53,6 @@ export interface FeatureToggleDTO { export interface FeatureToggle extends FeatureToggleDTO { project: string; lastSeenAt?: Date; - createdAt?: Date; variants?: IVariant[]; } diff --git a/src/migrations/20220603081324-add-archive-at-to-feature-toggle.js b/src/migrations/20220603081324-add-archive-at-to-feature-toggle.js new file mode 100644 index 0000000000..0d636b4b40 --- /dev/null +++ b/src/migrations/20220603081324-add-archive-at-to-feature-toggle.js @@ -0,0 +1,9 @@ +'use strict'; + +exports.up = function (db, callback) { + db.runSql('ALTER TABLE features ADD "archived_at" date;', callback); +}; + +exports.down = function (db, callback) { + db.runSql('ALTER TABLE features DROP COLUMN "archived_at";', callback); +};