Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | 2x 2x 2x 2x 2x 2x 2x | "use strict"; var fs = require('fs-extra'); var pathLib = require('path'); var databaseOps = require('../database-ops'); const { spawnSync } = require('child_process'); exports.createLambdaFunctionFolder = (lambdaPackageFolder, functionFolder, pathKey) => { const filesFolder = pathLib.join(lambdaPackageFolder, 'files'); let items = fs.readdirSync(filesFolder); items.forEach(file => { fs.writeFileSync(pathLib.join(functionFolder, file), fs.readFileSync(pathLib.join(filesFolder, file))); }); var appjs = fs.readFileSync(pathLib.join(lambdaPackageFolder, 'app.vm')); appjs = appjs + ""; var pathParams = pathKey + ""; pathParams.replace(new RegExp('\/{proxy\+}', 'g'), ''); let regPath = new RegExp('###PATH###', 'g'); appjs = appjs.replace(regPath, pathParams); fs.writeFileSync(pathLib.join(functionFolder, 'app.js'), appjs); console.log('...'); spawnSync('npm', ['install'], { cwd: functionFolder, env: process.env, stdio: ['pipe', 'pipe', 'ignore'] }); deleteFolderRecursive(pathLib.join(functionFolder, 'node_modules', '.bin')); } exports.createLambdaFunctionCrudApi = (lambdaDynamoPackageFolder, functionFolder, cloudLogicDefinition, path, table_name, hasUserId) => { const filesFolder = pathLib.join(lambdaDynamoPackageFolder, 'files'); let items = fs.readdirSync(filesFolder); items.forEach(file => { fs.writeFileSync(pathLib.join(functionFolder, file), fs.readFileSync(pathLib.join(filesFolder, file))); }); var appjs = fs.readFileSync(pathLib.join(lambdaDynamoPackageFolder, 'app.vm')); appjs = appjs + ""; let regTableName = new RegExp('###TABLE_NAME###', 'g'); let regObjectPath = new RegExp('###OBJECT_PATH###', 'g'); let regListObjectsPath = new RegExp('###LIST_OBJECTS_PATH###', 'g'); let regPath = new RegExp('###PATH###', 'g'); let regUserIdPresent = new RegExp('###USER_ID_PRESENT###', 'g'); let regHasDynamicPrefix = new RegExp('###HAS_DYNAMIC_PREFIX###', 'g'); let regPartitionKeyName = new RegExp('###PARTITION_KEY_NAME###', 'g'); let regPartitionKeyType = new RegExp('###PARTITION_KEY_TYPE###', 'g'); let regSortKeyName = new RegExp('###SORT_KEY_NAME###', 'g'); let regSortKeyType = new RegExp('###SORT_KEY_TYPE###', 'g'); let regHasSortKey = new RegExp('###HAS_SORT_KEY###', 'g'); var hashKeyName = cloudLogicDefinition.projectDefinition.nosql.tables[table_name].hashKeyName; var hashKeyType = databaseOps.getTypeCode(cloudLogicDefinition.projectDefinition.nosql.tables[table_name].hashKeyType); var sortKeyName = cloudLogicDefinition.projectDefinition.nosql.tables[table_name].sortKeyName; var sortKeyType = databaseOps.getTypeCode(cloudLogicDefinition.projectDefinition.nosql.tables[table_name].sortKeyType); var pathParams = '/' + table_name; var objectPath = '/' + table_name + '/object'; var listObjectsPath = '/' + table_name; if (!hasUserId) { objectPath += '/:' + hashKeyName; listObjectsPath += '/:' + hashKeyName; } if (sortKeyName.length > 0) { objectPath += '/:' + sortKeyName; } const hasDynamicPrefix = cloudLogicDefinition.projectDefinition.nosql.tables[table_name].hasDynamicPrefix; var jsonPut = {}; Object.keys(cloudLogicDefinition.projectDefinition.nosql.tables[table_name].attributes).map(attrKey => { jsonPut[attrKey] = {} const attrType = databaseOps.getTypeCode(cloudLogicDefinition.projectDefinition.nosql.tables[table_name].attributes[attrKey]); jsonPut[attrKey] = "INSERT VALUE HERE"; }) if (hasUserId) { delete jsonPut[hashKeyName]; } appjs = appjs.replace(regTableName, table_name); appjs = appjs.replace(regPartitionKeyName, hashKeyName); appjs = appjs.replace(regSortKeyName, sortKeyName); appjs = appjs.replace(regPartitionKeyType, hashKeyType); appjs = appjs.replace(regSortKeyType, sortKeyType); appjs = appjs.replace(regHasSortKey, sortKeyName.length > 0); appjs = appjs.replace(regObjectPath, objectPath); appjs = appjs.replace(regListObjectsPath, listObjectsPath); appjs = appjs.replace(regPath, pathParams); appjs = appjs.replace(regUserIdPresent, hasUserId); appjs = appjs.replace(regHasDynamicPrefix, hasDynamicPrefix); console.log('...'); fs.writeFileSync(pathLib.join(functionFolder, 'app.js'), appjs); spawnSync('npm', ['install'], { cwd: functionFolder, env: process.env, stdio: ['pipe', 'pipe', 'ignore'] }); deleteFolderRecursive(pathLib.join(functionFolder, 'node_modules', '.bin')); console.log('Path to be used on API for get and remove an object should be like:\n' + objectPath + '\n'); console.log('Path to be used on API for list objects on get method should be like:\n' + listObjectsPath + '\n'); console.log('JSON to be used as data on put request should be like:\n' + JSON.stringify(jsonPut, null, 2)); } // symbolic links dont get zip on awsmobile backend build var deleteFolderRecursive = function (path) { if (fs.existsSync(path)) { fs.readdirSync(path).forEach(function (file, index) { var curPath = path + "/" + file; if (fs.lstatSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); } else { // delete file fs.unlinkSync(curPath); } }); fs.rmdirSync(path); } }; |