mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
Activations: add an enabled_at column
For #1140, I considered trying to use the existing fields in a better way, but because we already use the activations table to store preferences, we need to keep all of the existing data and its usage as-is. The enterprise code will use this new column to decide how long the trial period should be.
This commit is contained in:
parent
952544432e
commit
ba7b72b39a
@ -22,6 +22,15 @@ export class Activation extends BaseEntity {
|
|||||||
@Column({name: 'updated_at', default: () => "CURRENT_TIMESTAMP"})
|
@Column({name: 'updated_at', default: () => "CURRENT_TIMESTAMP"})
|
||||||
public updatedAt: Date;
|
public updatedAt: Date;
|
||||||
|
|
||||||
|
// When the enterprise activation was first enabled, so we know when
|
||||||
|
// to start counting the trial date.
|
||||||
|
//
|
||||||
|
// Activations are created at Grist installation to track other
|
||||||
|
// things such as prefs, but the user might not enable Enterprise
|
||||||
|
// until later.
|
||||||
|
@Column({name: 'enabled_at', type: nativeValues.dateTimeType, nullable: true})
|
||||||
|
public enabledAt: Date|null;
|
||||||
|
|
||||||
public checkProperties(props: any): props is Partial<InstallProperties> {
|
public checkProperties(props: any): props is Partial<InstallProperties> {
|
||||||
for (const key of Object.keys(props)) {
|
for (const key of Object.keys(props)) {
|
||||||
if (!installPropertyKeys.includes(key)) {
|
if (!installPropertyKeys.includes(key)) {
|
||||||
|
18
app/gen-server/migration/1722529827161-Activation-Enabled.ts
Normal file
18
app/gen-server/migration/1722529827161-Activation-Enabled.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import * as sqlUtils from "app/gen-server/sqlUtils";
|
||||||
|
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
|
||||||
|
|
||||||
|
export class ActivationEnabled1722529827161 implements MigrationInterface {
|
||||||
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
const dbType = queryRunner.connection.driver.options.type;
|
||||||
|
const datetime = sqlUtils.datetime(dbType);
|
||||||
|
await queryRunner.addColumn('activations', new TableColumn({
|
||||||
|
name: 'enabled_at',
|
||||||
|
type: datetime,
|
||||||
|
isNullable: true,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||||
|
await queryRunner.dropColumn('activations', 'enabled_at');
|
||||||
|
}
|
||||||
|
}
|
@ -44,6 +44,8 @@ import {Shares1701557445716 as Shares} from 'app/gen-server/migration/1701557445
|
|||||||
import {Billing1711557445716 as BillingFeatures} from 'app/gen-server/migration/1711557445716-Billing';
|
import {Billing1711557445716 as BillingFeatures} from 'app/gen-server/migration/1711557445716-Billing';
|
||||||
import {UserLastConnection1713186031023
|
import {UserLastConnection1713186031023
|
||||||
as UserLastConnection} from 'app/gen-server/migration/1713186031023-UserLastConnection';
|
as UserLastConnection} from 'app/gen-server/migration/1713186031023-UserLastConnection';
|
||||||
|
import {ActivationEnabled1722529827161
|
||||||
|
as ActivationEnabled} from 'app/gen-server/migration/1722529827161-Activation-Enabled';
|
||||||
|
|
||||||
const home: HomeDBManager = new HomeDBManager();
|
const home: HomeDBManager = new HomeDBManager();
|
||||||
|
|
||||||
@ -53,7 +55,7 @@ const migrations = [Initial, Login, PinDocs, UserPicture, DisplayEmail, DisplayE
|
|||||||
ExternalBilling, DocOptions, Secret, UserOptions, GracePeriodStart,
|
ExternalBilling, DocOptions, Secret, UserOptions, GracePeriodStart,
|
||||||
DocumentUsage, Activations, UserConnectId, UserUUID, UserUniqueRefUUID,
|
DocumentUsage, Activations, UserConnectId, UserUUID, UserUniqueRefUUID,
|
||||||
Forks, ForkIndexes, ActivationPrefs, AssistantLimit, Shares, BillingFeatures,
|
Forks, ForkIndexes, ActivationPrefs, AssistantLimit, Shares, BillingFeatures,
|
||||||
UserLastConnection];
|
UserLastConnection, ActivationEnabled];
|
||||||
|
|
||||||
// Assert that the "members" acl rule and group exist (or not).
|
// Assert that the "members" acl rule and group exist (or not).
|
||||||
function assertMembersGroup(org: Organization, exists: boolean) {
|
function assertMembersGroup(org: Organization, exists: boolean) {
|
||||||
|
Loading…
Reference in New Issue
Block a user