@abtnode/models 1.16.8-next-d1e52353

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +1 -0
  2. package/lib/index.d.ts +5 -0
  3. package/lib/index.js +21 -0
  4. package/lib/migrate.d.ts +13 -0
  5. package/lib/migrate.js +127 -0
  6. package/lib/migrations/blocklet/20230422000000-genesis.js +21 -0
  7. package/lib/migrations/certificate-manager/20230422000000-genesis.js +19 -0
  8. package/lib/migrations/connect/20230422000000-genesis.js +13 -0
  9. package/lib/migrations/server/20230422000000-genesis.js +45 -0
  10. package/lib/migrations/service/20230422000000-genesis.js +13 -0
  11. package/lib/models/access-key.d.ts +6 -0
  12. package/lib/models/access-key.js +56 -0
  13. package/lib/models/account.d.ts +11 -0
  14. package/lib/models/account.js +56 -0
  15. package/lib/models/audit-log.d.ts +7 -0
  16. package/lib/models/audit-log.js +79 -0
  17. package/lib/models/backup.d.ts +6 -0
  18. package/lib/models/backup.js +72 -0
  19. package/lib/models/blocklet-extra.d.ts +7 -0
  20. package/lib/models/blocklet-extra.js +63 -0
  21. package/lib/models/blocklet.d.ts +6 -0
  22. package/lib/models/blocklet.js +120 -0
  23. package/lib/models/cache.d.ts +8 -0
  24. package/lib/models/cache.js +44 -0
  25. package/lib/models/certificate.d.ts +7 -0
  26. package/lib/models/certificate.js +70 -0
  27. package/lib/models/connected-account.d.ts +8 -0
  28. package/lib/models/connected-account.js +59 -0
  29. package/lib/models/connection.d.ts +23 -0
  30. package/lib/models/connection.js +89 -0
  31. package/lib/models/http-challenge.d.ts +9 -0
  32. package/lib/models/http-challenge.js +49 -0
  33. package/lib/models/index.d.ts +63 -0
  34. package/lib/models/index.js +149 -0
  35. package/lib/models/job.d.ts +13 -0
  36. package/lib/models/job.js +62 -0
  37. package/lib/models/message.d.ts +9 -0
  38. package/lib/models/message.js +54 -0
  39. package/lib/models/migration.d.ts +6 -0
  40. package/lib/models/migration.js +53 -0
  41. package/lib/models/notification.d.ts +4 -0
  42. package/lib/models/notification.js +77 -0
  43. package/lib/models/passport.d.ts +8 -0
  44. package/lib/models/passport.js +89 -0
  45. package/lib/models/rbac.d.ts +13 -0
  46. package/lib/models/rbac.js +65 -0
  47. package/lib/models/server.d.ts +10 -0
  48. package/lib/models/server.js +130 -0
  49. package/lib/models/session.d.ts +10 -0
  50. package/lib/models/session.js +54 -0
  51. package/lib/models/site.d.ts +8 -0
  52. package/lib/models/site.js +62 -0
  53. package/lib/models/user.d.ts +6 -0
  54. package/lib/models/user.js +105 -0
  55. package/lib/models/webhook.d.ts +6 -0
  56. package/lib/models/webhook.js +47 -0
  57. package/lib/states/base.d.ts +40 -0
  58. package/lib/states/base.js +144 -0
  59. package/lib/states/factory.d.ts +1 -0
  60. package/lib/states/factory.js +21 -0
  61. package/lib/types.d.ts +49 -0
  62. package/lib/types.js +2 -0
  63. package/lib/util.d.ts +6 -0
  64. package/lib/util.js +108 -0
  65. package/package.json +58 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # Blocklet Server Models
package/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './models';
2
+ export * from './migrate';
3
+ export * from './states/base';
4
+ export * from './states/factory';
5
+ export * from './util';
package/lib/index.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./models"), exports);
18
+ __exportStar(require("./migrate"), exports);
19
+ __exportStar(require("./states/base"), exports);
20
+ __exportStar(require("./states/factory"), exports);
21
+ __exportStar(require("./util"), exports);
@@ -0,0 +1,13 @@
1
+ export declare function doSchemaMigration(dbFile: string, group: string): Promise<import("umzug").MigrationMeta[]>;
2
+ type DataMigrationArgs = {
3
+ srcDir: string;
4
+ dbFile: string;
5
+ mapping: Record<string, string>;
6
+ models: Record<string, any>;
7
+ printInfo?: Function;
8
+ printError?: Function;
9
+ printSuccess?: Function;
10
+ };
11
+ export declare function doDataMigration({ srcDir, dbFile, mapping, models, printInfo, // eslint-disable-line no-console
12
+ printError, printSuccess, }: DataMigrationArgs): Promise<void>;
13
+ export {};
package/lib/migrate.js ADDED
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.doDataMigration = exports.doSchemaMigration = void 0;
7
+ /* eslint-disable no-await-in-loop */
8
+ /* eslint-disable no-continue */
9
+ const lodash_get_1 = __importDefault(require("lodash.get"));
10
+ const fs_1 = require("fs");
11
+ const path_1 = require("path");
12
+ const core_1 = require("@nedb/core");
13
+ const umzug_1 = require("umzug");
14
+ const models_1 = require("./models");
15
+ const MIGRATION_SCRIPT_EXTENSION = process.env.MIGRATION_SCRIPT_EXTENSION || 'js';
16
+ async function doSchemaMigration(dbFile, group) {
17
+ const sequelize = (0, models_1.createSequelize)(dbFile);
18
+ if (['server', 'blocklet', 'service', 'certificate-manager', 'connect'].includes(group) === false) {
19
+ throw new Error(`Not supported group ${group} when migrate database schema`);
20
+ }
21
+ const umzug = new umzug_1.Umzug({
22
+ migrations: { glob: [`migrations/${group}/*.${MIGRATION_SCRIPT_EXTENSION}`, { cwd: __dirname }] },
23
+ context: sequelize.getQueryInterface(),
24
+ storage: new umzug_1.SequelizeStorage({ sequelize }),
25
+ logger: process.env.NODE_ENV === 'test' ? undefined : console,
26
+ });
27
+ return umzug.up();
28
+ }
29
+ exports.doSchemaMigration = doSchemaMigration;
30
+ async function doDataMigration({ srcDir, dbFile, mapping, models, printInfo = console.info, // eslint-disable-line no-console
31
+ printError = console.error, printSuccess = console.info, // eslint-disable-line no-console
32
+ }) {
33
+ const sequelize = (0, models_1.createSequelize)(dbFile);
34
+ Object.values(mapping).forEach((x) => {
35
+ if (models[x]) {
36
+ models[x].initialize(sequelize);
37
+ }
38
+ });
39
+ // Init hidden models
40
+ ['Passport', 'ConnectedAccount'].forEach((x) => {
41
+ if (models[x]) {
42
+ models[x].initialize(sequelize);
43
+ }
44
+ });
45
+ const files = (0, fs_1.readdirSync)(srcDir).filter((file) => file.endsWith('.db'));
46
+ for (const file of files) {
47
+ const tableName = file.slice(0, -3);
48
+ const modelName = mapping[tableName];
49
+ if (!modelName) {
50
+ printInfo(`No mapping found for NeDB file: ${file}. Skipping.`);
51
+ continue;
52
+ }
53
+ const model = models[modelName];
54
+ if (!model) {
55
+ printInfo(`No Sequelize model found for NeDB file: ${file}. Skipping.`);
56
+ continue;
57
+ }
58
+ const filename = (0, path_1.join)(srcDir, file);
59
+ try {
60
+ const db = new core_1.DataStore({ filename, autoload: true });
61
+ const docs = await db.find({});
62
+ // Insert data into Sequelize database
63
+ for (const doc of docs) {
64
+ const newData = {
65
+ ...doc,
66
+ id: doc._id,
67
+ createdAt: new Date(doc.createdAt || doc.created),
68
+ updatedAt: new Date(doc.updatedAt || doc.updated),
69
+ };
70
+ if (!newData.id) {
71
+ delete newData.id;
72
+ }
73
+ // Hack: 1-time-use data split to multiple tables
74
+ if (modelName === 'User') {
75
+ // rename fields
76
+ newData.sourceProvider = newData.sourceProvider || (0, lodash_get_1.default)(newData, 'extraConfigs.sourceProvider') || 'wallet';
77
+ // split fields
78
+ const passports = (newData.passports || []).filter((p) => p.id);
79
+ const connectedAccounts = (0, lodash_get_1.default)(newData, 'extraConfigs.connectedAccounts') ||
80
+ [
81
+ {
82
+ provider: 'wallet',
83
+ did: newData.did,
84
+ pk: newData.pk,
85
+ lastLoginAt: newData.lastLoginAt,
86
+ firstLoginAt: newData.firstLoginAt,
87
+ },
88
+ ].filter((a) => a.provider && a.did);
89
+ try {
90
+ await model.create(newData);
91
+ await Promise.all(passports.map((p) => models.Passport.create({ ...p, userDid: newData.did })));
92
+ await Promise.all(connectedAccounts.map((a) => models.ConnectedAccount.create({ ...a, userDid: newData.did })));
93
+ printInfo(`Import user into sqlite: ${newData.did}`);
94
+ }
95
+ catch (err) {
96
+ printError('Error importing user into sqlite:', err, doc);
97
+ }
98
+ }
99
+ else {
100
+ // Hack: 1-time-use data transformation
101
+ if (modelName === 'Site') {
102
+ if (Array.isArray(doc.domainAliases)) {
103
+ newData.domainAliases = doc.domainAliases.map((x) => {
104
+ if (typeof x === 'string') {
105
+ return { value: x, isProtected: false };
106
+ }
107
+ return x;
108
+ });
109
+ }
110
+ }
111
+ try {
112
+ await model.create(newData);
113
+ printInfo(`Import data into sqlite ${modelName}:`, doc._id);
114
+ }
115
+ catch (err) {
116
+ printError('Error importing data into sqlite:', err);
117
+ }
118
+ }
119
+ }
120
+ printSuccess(`Migrated data from nedb ${filename} to sqlite ${modelName}.`);
121
+ }
122
+ catch (err) {
123
+ printError(`Error reading data from NeDB file ${filename}: ${err.message}`);
124
+ }
125
+ }
126
+ }
127
+ exports.doDataMigration = doDataMigration;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ const models_1 = require("../../models");
5
+ const models = (0, models_1.getBlockletModels)();
6
+ const up = async ({ context }) => {
7
+ await context.createTable('permissions', models.Rbac.GENESIS_ATTRIBUTES);
8
+ await context.createTable('sessions', models.Session.GENESIS_ATTRIBUTES);
9
+ await context.createTable('users', models.User.GENESIS_ATTRIBUTES);
10
+ await context.createTable('passports', models.Passport.GENESIS_ATTRIBUTES);
11
+ await context.createTable('connected_accounts', models.ConnectedAccount.GENESIS_ATTRIBUTES);
12
+ };
13
+ exports.up = up;
14
+ const down = async ({ context }) => {
15
+ await context.dropTable('permissions');
16
+ await context.dropTable('sessions');
17
+ await context.dropTable('users');
18
+ await context.dropTable('passports');
19
+ await context.dropTable('connected_accounts');
20
+ };
21
+ exports.down = down;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ const models_1 = require("../../models");
5
+ const models = (0, models_1.getCertificateManagerModels)();
6
+ const up = async ({ context }) => {
7
+ await context.createTable('accounts', models.Account.GENESIS_ATTRIBUTES);
8
+ await context.createTable('certificates', models.Certificate.GENESIS_ATTRIBUTES);
9
+ await context.createTable('http_challenges', models.HttpChallenge.GENESIS_ATTRIBUTES);
10
+ await context.createTable('jobs', models.Job.GENESIS_ATTRIBUTES);
11
+ };
12
+ exports.up = up;
13
+ const down = async ({ context }) => {
14
+ await context.dropTable('accounts');
15
+ await context.dropTable('certificates');
16
+ await context.dropTable('http_challenges');
17
+ await context.dropTable('jobs');
18
+ };
19
+ exports.down = down;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ const models_1 = require("../../models");
5
+ const models = (0, models_1.getConnectModels)();
6
+ const up = async ({ context }) => {
7
+ await context.createTable('connections', models.Connection.GENESIS_ATTRIBUTES);
8
+ };
9
+ exports.up = up;
10
+ const down = async ({ context }) => {
11
+ await context.dropTable('connections');
12
+ };
13
+ exports.down = down;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ const models_1 = require("../../models");
5
+ const models = (0, models_1.getServerModels)();
6
+ const up = async ({ context }) => {
7
+ await context.createTable('access_keys', models.AccessKey.GENESIS_ATTRIBUTES);
8
+ await context.createTable('audit_logs', models.AuditLog.GENESIS_ATTRIBUTES);
9
+ await context.createTable('blocklet_extras', models.BlockletExtra.GENESIS_ATTRIBUTES);
10
+ await context.createTable('blocklets', models.Blocklet.GENESIS_ATTRIBUTES);
11
+ await context.createTable('caches', models.Cache.GENESIS_ATTRIBUTES);
12
+ await context.createTable('jobs', models.Job.GENESIS_ATTRIBUTES);
13
+ await context.createTable('migrations', models.Migration.GENESIS_ATTRIBUTES);
14
+ await context.createTable('notifications', models.Notification.GENESIS_ATTRIBUTES);
15
+ await context.createTable('permissions', models.Rbac.GENESIS_ATTRIBUTES);
16
+ await context.createTable('servers', models.Server.GENESIS_ATTRIBUTES);
17
+ await context.createTable('sessions', models.Session.GENESIS_ATTRIBUTES);
18
+ await context.createTable('sites', models.Site.GENESIS_ATTRIBUTES);
19
+ await context.createTable('users', models.User.GENESIS_ATTRIBUTES);
20
+ await context.createTable('passports', models.Passport.GENESIS_ATTRIBUTES);
21
+ await context.createTable('connected_accounts', models.ConnectedAccount.GENESIS_ATTRIBUTES);
22
+ await context.createTable('webhooks', models.WebHook.GENESIS_ATTRIBUTES);
23
+ await context.createTable('backups', models.Backup.GENESIS_ATTRIBUTES);
24
+ };
25
+ exports.up = up;
26
+ const down = async ({ context }) => {
27
+ await context.dropTable('access_keys');
28
+ await context.dropTable('audit_logs');
29
+ await context.dropTable('blocklet_extras');
30
+ await context.dropTable('blocklets');
31
+ await context.dropTable('caches');
32
+ await context.dropTable('jobs');
33
+ await context.dropTable('migrations');
34
+ await context.dropTable('notifications');
35
+ await context.dropTable('permissions');
36
+ await context.dropTable('servers');
37
+ await context.dropTable('sessions');
38
+ await context.dropTable('sites');
39
+ await context.dropTable('users');
40
+ await context.dropTable('passports');
41
+ await context.dropTable('connected_accounts');
42
+ await context.dropTable('webhooks');
43
+ await context.dropTable('backups');
44
+ };
45
+ exports.down = down;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.down = exports.up = void 0;
4
+ const models_1 = require("../../models");
5
+ const models = (0, models_1.getServiceModels)();
6
+ const up = async ({ context }) => {
7
+ await context.createTable('messages', models.Message.GENESIS_ATTRIBUTES);
8
+ };
9
+ exports.up = up;
10
+ const down = async ({ context }) => {
11
+ await context.dropTable('messages');
12
+ };
13
+ exports.down = down;
@@ -0,0 +1,6 @@
1
+ import { TAccessKey } from '@abtnode/types';
2
+ import { DynamicModel } from '../types';
3
+ export type AccessKeyState = TAccessKey & {
4
+ updatedAt: Date;
5
+ };
6
+ export declare function createAccessKeyModel(): DynamicModel<AccessKeyState>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAccessKeyModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ function createAccessKeyModel() {
6
+ var _a;
7
+ return _a = class AccessKey extends sequelize_1.Model {
8
+ static initialize(sequelize) {
9
+ this.init({ ...this.GENESIS_ATTRIBUTES }, {
10
+ sequelize,
11
+ modelName: 'AccessKey',
12
+ tableName: 'access_keys',
13
+ timestamps: true,
14
+ });
15
+ }
16
+ },
17
+ // CAUTION: DO NOT EDIT THIS
18
+ _a.GENESIS_ATTRIBUTES = {
19
+ accessKeyId: {
20
+ type: sequelize_1.DataTypes.STRING(40),
21
+ primaryKey: true,
22
+ unique: true,
23
+ },
24
+ accessKeyPublic: {
25
+ type: sequelize_1.DataTypes.STRING(256),
26
+ },
27
+ passport: {
28
+ type: sequelize_1.DataTypes.STRING(16),
29
+ },
30
+ remark: {
31
+ type: sequelize_1.DataTypes.STRING(128),
32
+ },
33
+ createdBy: {
34
+ type: sequelize_1.DataTypes.STRING(40),
35
+ },
36
+ updatedBy: {
37
+ type: sequelize_1.DataTypes.STRING(40),
38
+ },
39
+ createdAt: {
40
+ type: sequelize_1.DataTypes.DATE,
41
+ defaultValue: sequelize_1.DataTypes.NOW,
42
+ },
43
+ updatedAt: {
44
+ type: sequelize_1.DataTypes.DATE,
45
+ defaultValue: sequelize_1.DataTypes.NOW,
46
+ index: true,
47
+ },
48
+ lastUsedAt: {
49
+ type: sequelize_1.DataTypes.DATE,
50
+ defaultValue: sequelize_1.DataTypes.NOW,
51
+ index: true,
52
+ },
53
+ },
54
+ _a;
55
+ }
56
+ exports.createAccessKeyModel = createAccessKeyModel;
@@ -0,0 +1,11 @@
1
+ import { DynamicModel } from '../types';
2
+ export type AccountState = {
3
+ id: string;
4
+ directoryUrl: string;
5
+ private_key: object;
6
+ account: object;
7
+ maintainer_email: string;
8
+ createdAt: Date;
9
+ updatedAt: Date;
10
+ };
11
+ export declare function createAccountModel(): DynamicModel<AccountState>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAccountModel = void 0;
4
+ // Storage for multi-queue job storage
5
+ const sequelize_1 = require("sequelize");
6
+ const util_1 = require("../util");
7
+ function createAccountModel() {
8
+ var _a;
9
+ return _a = class Account extends sequelize_1.Model {
10
+ static initialize(sequelize) {
11
+ this.init({
12
+ ...this.GENESIS_ATTRIBUTES,
13
+ }, {
14
+ sequelize,
15
+ modelName: 'Account',
16
+ tableName: 'accounts',
17
+ timestamps: true,
18
+ });
19
+ }
20
+ },
21
+ _a.GENESIS_ATTRIBUTES = {
22
+ id: {
23
+ type: sequelize_1.DataTypes.STRING(40),
24
+ primaryKey: true,
25
+ defaultValue: util_1.generateId,
26
+ },
27
+ directoryUrl: {
28
+ type: sequelize_1.DataTypes.STRING(255),
29
+ unique: true,
30
+ allowNull: false,
31
+ },
32
+ private_key: {
33
+ type: sequelize_1.DataTypes.JSON,
34
+ allowNull: false,
35
+ },
36
+ account: {
37
+ type: sequelize_1.DataTypes.JSON,
38
+ allowNull: false,
39
+ },
40
+ maintainer_email: {
41
+ type: sequelize_1.DataTypes.STRING(255),
42
+ },
43
+ createdAt: {
44
+ type: sequelize_1.DataTypes.DATE,
45
+ defaultValue: sequelize_1.DataTypes.NOW,
46
+ index: true,
47
+ },
48
+ updatedAt: {
49
+ type: sequelize_1.DataTypes.DATE,
50
+ defaultValue: sequelize_1.DataTypes.NOW,
51
+ index: true,
52
+ },
53
+ },
54
+ _a;
55
+ }
56
+ exports.createAccountModel = createAccountModel;
@@ -0,0 +1,7 @@
1
+ import { TAuditLog } from '@abtnode/types';
2
+ import { DynamicModel } from '../types';
3
+ export type AuditLogState = TAuditLog & {
4
+ updatedAt: Date;
5
+ extra: any;
6
+ };
7
+ export declare function createAuditLogModel(): DynamicModel<AuditLogState>;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAuditLogModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ const util_1 = require("../util");
6
+ function createAuditLogModel() {
7
+ var _a;
8
+ return _a = class AuditLog extends sequelize_1.Model {
9
+ static initialize(sequelize) {
10
+ this.init({
11
+ ...this.GENESIS_ATTRIBUTES,
12
+ }, {
13
+ sequelize,
14
+ modelName: 'AuditLog',
15
+ tableName: 'audit_logs',
16
+ timestamps: true,
17
+ });
18
+ }
19
+ },
20
+ // CAUTION: DO NOT EDIT THIS
21
+ _a.GENESIS_ATTRIBUTES = {
22
+ id: {
23
+ type: sequelize_1.DataTypes.STRING(40),
24
+ primaryKey: true,
25
+ defaultValue: util_1.generateId,
26
+ },
27
+ scope: {
28
+ type: sequelize_1.DataTypes.STRING(64),
29
+ allowNull: false,
30
+ index: true,
31
+ },
32
+ action: {
33
+ type: sequelize_1.DataTypes.STRING(64),
34
+ allowNull: false,
35
+ },
36
+ category: {
37
+ type: sequelize_1.DataTypes.STRING(64),
38
+ allowNull: false,
39
+ index: true,
40
+ },
41
+ content: {
42
+ type: sequelize_1.DataTypes.TEXT,
43
+ allowNull: false,
44
+ },
45
+ actor: {
46
+ type: sequelize_1.DataTypes.JSON,
47
+ allowNull: false,
48
+ index: true,
49
+ },
50
+ extra: {
51
+ type: sequelize_1.DataTypes.JSON,
52
+ allowNull: false,
53
+ },
54
+ env: {
55
+ type: sequelize_1.DataTypes.JSON,
56
+ allowNull: false,
57
+ },
58
+ ip: {
59
+ type: sequelize_1.DataTypes.STRING(32),
60
+ allowNull: true,
61
+ },
62
+ ua: {
63
+ type: sequelize_1.DataTypes.STRING(512),
64
+ allowNull: true,
65
+ },
66
+ createdAt: {
67
+ type: sequelize_1.DataTypes.DATE,
68
+ defaultValue: sequelize_1.DataTypes.NOW,
69
+ index: true,
70
+ },
71
+ updatedAt: {
72
+ type: sequelize_1.DataTypes.DATE,
73
+ defaultValue: sequelize_1.DataTypes.NOW,
74
+ index: true,
75
+ },
76
+ },
77
+ _a;
78
+ }
79
+ exports.createAuditLogModel = createAuditLogModel;
@@ -0,0 +1,6 @@
1
+ import { TBackup } from '@abtnode/types';
2
+ import { DynamicModel } from '../types';
3
+ export type BackupState = TBackup & {
4
+ id: string;
5
+ };
6
+ export declare function createBackupModel(): DynamicModel<BackupState>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBackupModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ const util_1 = require("../util");
6
+ function createBackupModel() {
7
+ var _a;
8
+ return _a = class Backup extends sequelize_1.Model {
9
+ static initialize(sequelize) {
10
+ this.init({
11
+ ...this.GENESIS_ATTRIBUTES,
12
+ }, {
13
+ sequelize,
14
+ modelName: 'Backup',
15
+ tableName: 'backups',
16
+ timestamps: true,
17
+ });
18
+ }
19
+ },
20
+ _a.GENESIS_ATTRIBUTES = {
21
+ id: {
22
+ type: sequelize_1.DataTypes.STRING(40),
23
+ primaryKey: true,
24
+ defaultValue: util_1.generateId,
25
+ },
26
+ appPid: {
27
+ type: sequelize_1.DataTypes.STRING(40),
28
+ index: true,
29
+ },
30
+ userDid: {
31
+ type: sequelize_1.DataTypes.STRING(40),
32
+ index: true,
33
+ },
34
+ strategy: {
35
+ type: sequelize_1.DataTypes.TINYINT,
36
+ defaultValue: 0,
37
+ unsigned: true,
38
+ },
39
+ sourceUrl: {
40
+ type: sequelize_1.DataTypes.STRING(512),
41
+ defaultValue: '',
42
+ },
43
+ target: {
44
+ type: sequelize_1.DataTypes.STRING(16),
45
+ defaultValue: 'Spaces',
46
+ },
47
+ targetUrl: {
48
+ type: sequelize_1.DataTypes.STRING(512),
49
+ defaultValue: '',
50
+ },
51
+ status: {
52
+ type: sequelize_1.DataTypes.TINYINT,
53
+ unsigned: true,
54
+ },
55
+ message: {
56
+ type: sequelize_1.DataTypes.TEXT,
57
+ defaultValue: '',
58
+ },
59
+ createdAt: {
60
+ type: sequelize_1.DataTypes.DATE,
61
+ defaultValue: sequelize_1.DataTypes.NOW,
62
+ index: true,
63
+ },
64
+ updatedAt: {
65
+ type: sequelize_1.DataTypes.DATE,
66
+ defaultValue: sequelize_1.DataTypes.NOW,
67
+ index: true,
68
+ },
69
+ },
70
+ _a;
71
+ }
72
+ exports.createBackupModel = createBackupModel;
@@ -0,0 +1,7 @@
1
+ import { TBlockletExtra } from '@abtnode/types';
2
+ import { DynamicModel } from '../types';
3
+ export type BlockletExtraState = TBlockletExtra & {
4
+ createdAt: Date;
5
+ updatedAt: Date;
6
+ };
7
+ export declare function createBlockletExtraModel(): DynamicModel<BlockletExtraState>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBlockletExtraModel = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ function createBlockletExtraModel() {
6
+ var _a;
7
+ return _a = class BlockletExtra extends sequelize_1.Model {
8
+ static initialize(sequelize) {
9
+ this.init({ ...this.GENESIS_ATTRIBUTES }, {
10
+ sequelize,
11
+ modelName: 'BlockletExtra',
12
+ tableName: 'blocklet_extras',
13
+ timestamps: true,
14
+ });
15
+ }
16
+ },
17
+ // CAUTION: DO NOT EDIT THIS
18
+ _a.GENESIS_ATTRIBUTES = {
19
+ did: {
20
+ type: sequelize_1.DataTypes.STRING(40),
21
+ primaryKey: true,
22
+ },
23
+ appDid: {
24
+ type: sequelize_1.DataTypes.STRING(40),
25
+ unique: true,
26
+ index: true,
27
+ },
28
+ meta: {
29
+ type: sequelize_1.DataTypes.JSON,
30
+ defaultValue: {},
31
+ },
32
+ controller: {
33
+ type: sequelize_1.DataTypes.JSON,
34
+ },
35
+ configs: {
36
+ type: sequelize_1.DataTypes.JSON,
37
+ defaultValue: [],
38
+ },
39
+ children: {
40
+ type: sequelize_1.DataTypes.JSON,
41
+ defaultValue: [],
42
+ },
43
+ settings: {
44
+ type: sequelize_1.DataTypes.JSON,
45
+ defaultValue: {},
46
+ },
47
+ expiredAt: {
48
+ type: sequelize_1.DataTypes.STRING(30),
49
+ },
50
+ createdAt: {
51
+ type: sequelize_1.DataTypes.DATE,
52
+ defaultValue: sequelize_1.DataTypes.NOW,
53
+ index: true,
54
+ },
55
+ updatedAt: {
56
+ type: sequelize_1.DataTypes.DATE,
57
+ defaultValue: sequelize_1.DataTypes.NOW,
58
+ index: true,
59
+ },
60
+ },
61
+ _a;
62
+ }
63
+ exports.createBlockletExtraModel = createBlockletExtraModel;
@@ -0,0 +1,6 @@
1
+ import { TBlockletState } from '@abtnode/types';
2
+ import { DynamicModel } from '../types';
3
+ export type BlockletState = Omit<TBlockletState, 'port' | 'configs' | 'trustedFactories' | 'trustedPassports' | 'enablePassportIssuance' | 'dynamic' | 'mountPoint'> & {
4
+ updatedAt: Date;
5
+ };
6
+ export declare function createBlockletModel(): DynamicModel<BlockletState>;