@memberjunction/open-app-engine 6.1.0-edge.3 → 6.1.0-edge.5

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.
@@ -0,0 +1,160 @@
1
+ import { GetDialect } from '@memberjunction/sql-dialect';
2
+ const ALWAYS_EXCLUDE_FROM_FIELD_PROCS = ['sys', 'staging'];
3
+ const VIEW_REFRESH_EXCLUDED = ['sys', 'INFORMATION_SCHEMA'];
4
+ export function isOpenAppSchema(targetSchema, coreSchema) {
5
+ return normalizeSchema(targetSchema) !== normalizeSchema(coreSchema);
6
+ }
7
+ export function normalizeSchema(name) {
8
+ return name.trim().toLowerCase();
9
+ }
10
+ export function buildFieldProcExcludedSchemaNames(appSchema, otherEntitySchemas) {
11
+ const seen = new Set();
12
+ const names = [];
13
+ for (const name of [...ALWAYS_EXCLUDE_FROM_FIELD_PROCS, ...otherEntitySchemas]) {
14
+ const trimmed = name.trim();
15
+ if (!trimmed)
16
+ continue;
17
+ if (normalizeSchema(trimmed) === normalizeSchema(appSchema))
18
+ continue;
19
+ const key = normalizeSchema(trimmed);
20
+ if (seen.has(key))
21
+ continue;
22
+ seen.add(key);
23
+ names.push(trimmed);
24
+ }
25
+ return names.join(',');
26
+ }
27
+ export function buildOpenAppRefreshMetadataSQL(platform, coreSchema, appSchema, otherEntitySchemas) {
28
+ const dialect = GetDialect(platform);
29
+ const core = dialect.CanonicalSchemaName(coreSchema);
30
+ const app = dialect.CanonicalSchemaName(appSchema);
31
+ return platform === 'postgresql'
32
+ ? buildPostgresRefreshSQL(core, app, otherEntitySchemas)
33
+ : buildSqlServerRefreshSQL(core, app, otherEntitySchemas);
34
+ }
35
+ function sqlN(value) {
36
+ return `N'${value.replace(/'/g, "''")}'`;
37
+ }
38
+ function sqlStr(value) {
39
+ return `'${value.replace(/'/g, "''")}'`;
40
+ }
41
+ function bracketIdent(name) {
42
+ return `[${name.replace(/]/g, ']]')}]`;
43
+ }
44
+ function pgIdent(name) {
45
+ return `"${name.replace(/"/g, '""')}"`;
46
+ }
47
+ function buildSqlServerRefreshSQL(coreSchema, appSchema, otherEntitySchemas) {
48
+ const core = bracketIdent(coreSchema);
49
+ const included = sqlN(appSchema);
50
+ const viewExcluded = sqlN(VIEW_REFRESH_EXCLUDED.join(','));
51
+ const fieldExcluded = sqlN(buildFieldProcExcludedSchemaNames(appSchema, otherEntitySchemas));
52
+ return [
53
+ `EXEC ${core}.spRecompileAllViews @ExcludedSchemaNames=${viewExcluded}, @IncludedSchemaNames=${included};`,
54
+ `EXEC ${core}.spUpdateExistingEntitiesFromSchema @ExcludedSchemaNames=${fieldExcluded};`,
55
+ `EXEC ${core}.spUpdateSchemaInfoFromDatabase @ExcludedSchemaNames=${fieldExcluded};`,
56
+ `EXEC ${core}.spDeleteUnneededEntityFields @ExcludedSchemaNames=${fieldExcluded};`,
57
+ `EXEC ${core}.spUpdateExistingEntityFieldsFromSchema @ExcludedSchemaNames=${fieldExcluded};`,
58
+ `EXEC ${core}.spSetDefaultColumnWidthWhereNeeded @ExcludedSchemaNames=${fieldExcluded};`,
59
+ ].join('\n');
60
+ }
61
+ function buildPostgresRefreshSQL(coreSchema, appSchema, otherEntitySchemas) {
62
+ const core = pgIdent(coreSchema);
63
+ const fieldExcluded = sqlStr(buildFieldProcExcludedSchemaNames(appSchema, otherEntitySchemas));
64
+ const app = sqlStr(appSchema);
65
+ return [
66
+ `SELECT ${core}."spRebindLayeredOuterViewsInSchema"(${app});`,
67
+ `UPDATE ${core}."EntityField" ef`,
68
+ ` SET "AllowsNull" = (c.is_nullable = 'YES')`,
69
+ ` FROM ${core}."Entity" e,`,
70
+ ` information_schema.columns c`,
71
+ ` WHERE ef."EntityID" = e."ID"`,
72
+ ` AND c.table_schema = e."SchemaName"`,
73
+ ` AND c.table_name = e."BaseTable"`,
74
+ ` AND c.column_name = ef."Name"`,
75
+ ` AND ef."IsVirtual" = false`,
76
+ ` AND e."SchemaName" = ${app}`,
77
+ ` AND ef."AllowsNull" <> (c.is_nullable = 'YES');`,
78
+ `SELECT * FROM ${core}."spUpdateExistingEntitiesFromSchema"(${fieldExcluded});`,
79
+ `SELECT * FROM ${core}."spUpdateSchemaInfoFromDatabase"(${fieldExcluded});`,
80
+ `SELECT * FROM ${core}."spDeleteUnneededEntityFields"(${fieldExcluded});`,
81
+ `SELECT * FROM ${core}."spUpdateExistingEntityFieldsFromSchema"(${fieldExcluded});`,
82
+ `SELECT * FROM ${core}."spSetDefaultColumnWidthWhereNeeded"(${fieldExcluded});`,
83
+ ].join('\n');
84
+ }
85
+ export function buildOtherEntitySchemasQuery(platform, coreSchema, appSchema) {
86
+ const d = GetDialect(platform);
87
+ const core = d.CanonicalSchemaName(coreSchema);
88
+ const app = d.CanonicalSchemaName(appSchema);
89
+ const entity = d.QuoteSchema(core, 'Entity');
90
+ const col = d.QuoteIdentifier('SchemaName');
91
+ const lit = platform === 'postgresql' ? sqlStr(app) : sqlN(app);
92
+ return `SELECT DISTINCT ${col} AS "SchemaName" FROM ${entity} WHERE ${col} <> ${lit}`;
93
+ }
94
+ export async function executeOpenAppMetadataRefresh(options) {
95
+ const { platform, database } = options;
96
+ const dialect = GetDialect(platform);
97
+ const coreSchema = dialect.CanonicalSchemaName(options.coreSchema);
98
+ const appSchema = dialect.CanonicalSchemaName(options.appSchema);
99
+ const runner = await openRefreshConnection(platform, database);
100
+ try {
101
+ const schemaQuery = buildOtherEntitySchemasQuery(platform, coreSchema, appSchema);
102
+ const rows = await runner.query(schemaQuery);
103
+ const sql = buildOpenAppRefreshMetadataSQL(platform, coreSchema, appSchema, rows.map((r) => String(r.SchemaName)));
104
+ await runner.query(sql);
105
+ }
106
+ finally {
107
+ await runner.close();
108
+ }
109
+ }
110
+ async function openRefreshConnection(platform, database) {
111
+ if (platform === 'postgresql') {
112
+ const pgMod = await import('pg');
113
+ const pg = pgMod.Client ? pgMod : pgMod.default;
114
+ const client = new pg.Client({
115
+ host: database.Host,
116
+ port: database.Port,
117
+ user: database.User,
118
+ password: database.Password,
119
+ database: database.Database,
120
+ });
121
+ await client.connect();
122
+ return {
123
+ async query(sql) {
124
+ const result = await client.query(sql);
125
+ return (result.rows ?? []);
126
+ },
127
+ async close() {
128
+ await client.end();
129
+ },
130
+ };
131
+ }
132
+ const mssqlMod = await import('mssql');
133
+ const mssql = mssqlMod.ConnectionPool
134
+ ? mssqlMod
135
+ : mssqlMod.default;
136
+ const isAzureSql = database.Host.includes('.database.windows.net');
137
+ const pool = await new mssql.ConnectionPool({
138
+ server: database.Host,
139
+ port: database.Port ?? 1433,
140
+ user: database.User,
141
+ password: database.Password,
142
+ database: database.Database,
143
+ options: {
144
+ encrypt: database.Encrypt ?? isAzureSql,
145
+ trustServerCertificate: database.TrustServerCertificate ?? !isAzureSql,
146
+ enableArithAbort: true,
147
+ },
148
+ requestTimeout: database.RequestTimeout ?? 600000,
149
+ }).connect();
150
+ return {
151
+ async query(sql) {
152
+ const result = await pool.request().query(sql);
153
+ return (result.recordset ?? []);
154
+ },
155
+ async close() {
156
+ await pool.close();
157
+ },
158
+ };
159
+ }
160
+ //# sourceMappingURL=open-app-metadata-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-app-metadata-refresh.js","sourceRoot":"","sources":["../../src/install/open-app-metadata-refresh.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@ export declare function ValidateSchemaName(schemaName: string, options?: Validat
10
10
  export declare function SchemaExists(schemaName: string, provider: DatabaseProviderBase): Promise<boolean>;
11
11
  export declare function CreateAppSchema(schemaName: string, provider: DatabaseProviderBase, options?: ValidateSchemaNameOptions): Promise<SchemaOperationResult>;
12
12
  export declare function DropAppSchema(schemaName: string, provider: DatabaseProviderBase, options?: ValidateSchemaNameOptions): Promise<SchemaOperationResult>;
13
- export declare function EscapeSqlString(value: string): string;
13
+ export declare const EscapeSqlString: (value: string | null | undefined) => string;
14
14
  //# sourceMappingURL=schema-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-manager.d.ts","sourceRoot":"","sources":["../../src/install/schema-manager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAgB5D,MAAM,WAAW,qBAAqB;IAEpC,OAAO,EAAE,OAAO,CAAC;IAEjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,yBAAyB;IAKxC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AASD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,yBAA8B,GACtC,qBAAqB,CAgBvB;AASD,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAQlB;AASD,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA8BhC;AASD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA6ChC;AAoFD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"schema-manager.d.ts","sourceRoot":"","sources":["../../src/install/schema-manager.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAiB5D,MAAM,WAAW,qBAAqB;IAEpC,OAAO,EAAE,OAAO,CAAC;IAEjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,yBAAyB;IAKxC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AASD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,yBAA8B,GACtC,qBAAqB,CAgBvB;AASD,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAQlB;AASD,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA8BhC;AASD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA6ChC;AAwFD,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAAgC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { EscapeSQLString } from '@memberjunction/global';
1
2
  const RESERVED_SCHEMAS = new Set([
2
3
  'dbo',
3
4
  'sys',
@@ -21,7 +22,7 @@ export function ValidateSchemaName(schemaName, options = {}) {
21
22
  return { Success: true };
22
23
  }
23
24
  export async function SchemaExists(schemaName, provider) {
24
- const results = await provider.ExecuteSQL(`SELECT 1 AS Exists_ FROM information_schema.schemata WHERE schema_name = '${EscapeSqlString(schemaName)}'`);
25
+ const results = await provider.ExecuteSQL(`SELECT 1 AS Exists_ FROM information_schema.schemata WHERE schema_name = '${EscapeSQLString(schemaName)}'`);
25
26
  return results.length > 0;
26
27
  }
27
28
  export async function CreateAppSchema(schemaName, provider, options = {}) {
@@ -56,7 +57,7 @@ export async function DropAppSchema(schemaName, provider, options = {}) {
56
57
  }
57
58
  try {
58
59
  if (provider.Dialect.PlatformKey === 'postgresql') {
59
- const matches = await provider.ExecuteSQL(`SELECT schema_name FROM information_schema.schemata WHERE lower(schema_name) = lower('${EscapeSqlString(schemaName)}')`);
60
+ const matches = await provider.ExecuteSQL(`SELECT schema_name FROM information_schema.schemata WHERE lower(schema_name) = lower('${EscapeSQLString(schemaName)}')`);
60
61
  for (const m of matches) {
61
62
  await provider.ExecuteSQL(`DROP SCHEMA ${provider.Dialect.QuoteIdentifier(m.schema_name)} CASCADE`);
62
63
  }
@@ -79,7 +80,7 @@ export async function DropAppSchema(schemaName, provider, options = {}) {
79
80
  }
80
81
  }
81
82
  async function DropAllSchemaObjects(schemaName, provider) {
82
- const escaped = EscapeSqlString(schemaName);
83
+ const escaped = EscapeSQLString(schemaName);
83
84
  await provider.ExecuteSQL(`
84
85
  DECLARE @sql NVARCHAR(MAX) = N'';
85
86
  SELECT @sql = @sql + N'ALTER TABLE ' + QUOTENAME('${escaped}') + N'.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT ' + QUOTENAME(name) + N';' + CHAR(10)
@@ -124,7 +125,5 @@ async function DropAllSchemaObjects(schemaName, provider) {
124
125
  IF @sql <> N'' EXEC sp_executesql @sql;
125
126
  `);
126
127
  }
127
- export function EscapeSqlString(value) {
128
- return value.replace(/'/g, "''");
129
- }
128
+ export const EscapeSqlString = (value) => EscapeSQLString(value);
130
129
  //# sourceMappingURL=schema-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-manager.js","sourceRoot":"","sources":["../../src/install/schema-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-manager.js","sourceRoot":"","sources":["../../src/install/schema-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/open-app-engine",
3
- "version": "6.1.0-edge.3",
3
+ "version": "6.1.0-edge.5",
4
4
  "description": "MemberJunction: MJ Open App Engine - packaging, distribution, and installation system for MJ Open Apps.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -11,10 +11,10 @@
11
11
  "author": "MemberJunction.com",
12
12
  "license": "BUSL-1.1",
13
13
  "dependencies": {
14
- "@memberjunction/core": "6.1.0-edge.3",
15
- "@memberjunction/core-entities": "6.1.0-edge.3",
16
- "@memberjunction/global": "6.1.0-edge.3",
17
- "@memberjunction/sql-dialect": "6.1.0-edge.3",
14
+ "@memberjunction/core": "6.1.0-edge.5",
15
+ "@memberjunction/core-entities": "6.1.0-edge.5",
16
+ "@memberjunction/global": "6.1.0-edge.5",
17
+ "@memberjunction/sql-dialect": "6.1.0-edge.5",
18
18
  "@octokit/rest": "^21.1.1",
19
19
  "semver": "^7.7.1",
20
20
  "simple-git": "^3.27.0",
@@ -23,7 +23,9 @@
23
23
  "optionalDependencies": {
24
24
  "@memberjunction/skyway-core": "^0.6.2",
25
25
  "@memberjunction/skyway-postgres": "^0.6.2",
26
- "@memberjunction/skyway-sqlserver": "^0.6.2"
26
+ "@memberjunction/skyway-sqlserver": "^0.6.2",
27
+ "mssql": "^11.0.1",
28
+ "pg": "^8.13.1"
27
29
  },
28
30
  "devDependencies": {
29
31
  "@types/semver": "^7.5.8",