@sap/cds-mtxs
Advanced tools
Comparing version 1.8.0 to 1.8.1
@@ -11,3 +11,4 @@ /* eslint-disable quote-props */ | ||
const sqlite_mt = { kind: 'sqlite', | ||
credentials: { url: 'db.sqlite' } | ||
credentials: { url: 'db.sqlite' }, | ||
schema_evolution:'auto', | ||
} | ||
@@ -101,3 +102,3 @@ | ||
"[development]": { | ||
requires: { auth: "dummy" }, | ||
// requires: { auth: "dummy" }, -> We need authentication for push and pull requests | ||
server: { port: 4005 } | ||
@@ -104,0 +105,0 @@ } |
const path = require('path') | ||
const fs = require('fs').promises | ||
const mtxAdapter = require('./mtx-adapter') | ||
const cds = require('@sap/cds') | ||
const { build } = require('./extension-project-builder') | ||
module.exports.DEFAULT_TAG = 'migrated' | ||
@@ -15,4 +14,6 @@ | ||
module.exports.createProjects = async function (tenant, mtxExtension, dir, tagRegex, defaultTag = module.exports.DEFAULT_TAG) { | ||
module.exports.createProjects = async function (mtxExtension, dir, tagRegex, defaultTag = module.exports.DEFAULT_TAG) { | ||
const validTags = [] | ||
const extensions = _splitExtensionByTag(mtxExtension, tagRegex, defaultTag) | ||
@@ -28,3 +29,3 @@ | ||
} | ||
await fs.mkdir(projectFolder, { recursive:true }) | ||
await fs.mkdir(projectFolder, { recursive: true }) | ||
// extension is a map of files | ||
@@ -36,25 +37,13 @@ await mtxAdapter.writeFilesFromMap(Array.from(extension), projectFolder) | ||
// keep in mind to avoid parallel execution !! - use runner from old mtx? | ||
// some workarounds to ensure that the internal models are never added | ||
const env = cds.env | ||
const root = cds.root | ||
const cwd = process.cwd() | ||
try { | ||
process.chdir(projectFolder) | ||
cds.root = projectFolder | ||
cds.env = cds.env.for('cds', projectFolder) | ||
cds.env.build.tasks = [ | ||
{ | ||
for: 'mtx-extension', | ||
options: { | ||
defaultBuiltInModels: false | ||
} | ||
} | ||
] | ||
await cds.build() | ||
} finally { | ||
process.chdir(cwd) | ||
cds.root = root | ||
cds.env = env | ||
await build({ project: projectFolder }) | ||
} catch (error) { | ||
if (!error.code === 'MODEL_NOT_FOUND') throw error | ||
continue | ||
} | ||
validTags.push(tag) | ||
} | ||
return validTags | ||
} | ||
@@ -61,0 +50,0 @@ |
@@ -183,3 +183,3 @@ const path = require('path') | ||
LOG.log('cds.xt.Extensions not yet deployed, deploying ...') | ||
DEBUG?.(error) | ||
DEBUG && DEBUG(error) | ||
await ds.subscribe({ tenant, metadata, options: { csn: extTables } }) // also creates metadata ... | ||
@@ -197,7 +197,6 @@ } | ||
await createProjects(tenant, mtxExtension, tenantProjectFolder, tagRegex, defaultTag) | ||
const tags = await createProjects(mtxExtension, tenantProjectFolder, tagRegex, defaultTag) | ||
// upload and verify extensions | ||
// iterate all tags | ||
const tags = await fs.readdir(tenantProjectFolder) | ||
migrationResult.log(tenant, `Created projects for tags "${tags}"`) | ||
@@ -208,3 +207,3 @@ | ||
try { | ||
await _verifyExtension(tenantProjectFolder, tenant) | ||
await _verifyExtension(tenantProjectFolder, tenant, tags) | ||
migrationResult.log(tenant, `Extension verification successful for tenant ${tenant} [${tenantProjectFolder}]`) | ||
@@ -270,5 +269,5 @@ } catch (error) { | ||
async function _verifyExtension(tenantProjectFolder, tenant) { | ||
async function _verifyExtension(tenantProjectFolder, tenant, tags) { | ||
const projectFolders = await fs.readdir(tenantProjectFolder) | ||
const projectFolders = tags//await fs.readdir(tenantProjectFolder) | ||
@@ -282,11 +281,4 @@ const mp = await cds.connect.to('cds.xt.ModelProviderService') | ||
for (const projectFolder of projectFolders) { | ||
let extensionCsn | ||
try { | ||
const extensionCsnString = await fs.readFile(path.join(tenantProjectFolder, projectFolder, 'gen', 'ext', 'extension.csn')) | ||
extensionCsn = JSON.parse(extensionCsnString) | ||
} catch (error) { | ||
// if migration gets here there MUST be an extension -> throw error | ||
throw new Error(`No extension build result found for tenant ${tenant}`) | ||
} | ||
const extensionCsnString = await fs.readFile(path.join(tenantProjectFolder, projectFolder, 'gen', 'ext', 'extension.csn')) | ||
const extensionCsn = JSON.parse(extensionCsnString) | ||
// do not apply extensions if mp.getCsn already contained extensions | ||
@@ -311,2 +303,5 @@ // TODO refine check | ||
} | ||
if (hanaDiffNewToOld.migrations.length) { | ||
throw new Error(`Verification error for tenant ${tenant}: migrations found`) | ||
} | ||
@@ -313,0 +308,0 @@ // does the new model contain more artifacts? |
{ | ||
"name": "@sap/cds-mtxs", | ||
"version": "1.8.0", | ||
"version": "1.8.1", | ||
"description": "SAP Cloud Application Programming Model - Multitenancy library", | ||
@@ -5,0 +5,0 @@ "homepage": "https://cap.cloud.sap/", |
@@ -17,2 +17,6 @@ const fs = require('fs').promises | ||
} | ||
// If we run in sidecar with mocked auth, use the main app's configured mock users | ||
if (conf.root && cds.env.requires.auth?.users) { | ||
cds.env.requires.auth.users = main.requires.auth.users | ||
} | ||
const fts = main.env.features.folders | ||
@@ -19,0 +23,0 @@ const DEBUG = cds.debug('mtx') |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
191814
63
4058
19