@nocobase/actions 0.5.0-alpha.30 → 0.5.0-alpha.34
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.
package/lib/actions/create.js
CHANGED
|
@@ -61,7 +61,7 @@ function create(ctx, next) {
|
|
|
61
61
|
_ctx$action$params$va = _ctx$action$params.values,
|
|
62
62
|
data = _ctx$action$params$va === void 0 ? {} : _ctx$action$params$va,
|
|
63
63
|
fields = _ctx$action$params.fields;
|
|
64
|
-
const values = utils_1.filterByFields(data, fields);
|
|
64
|
+
const values = (0, utils_1.filterByFields)(data, fields);
|
|
65
65
|
const transaction = yield ctx.db.sequelize.transaction();
|
|
66
66
|
const options = {
|
|
67
67
|
transaction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["actions/create.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,oCAA0C;AAgB1C,SAAsB,MAAM,CAAC,GAAY,EAAE,IAAU;;QACnD,MAAM,EACJ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,MAAM,EAAE,IAAI,GAAG,EAAE,EACjB,MAAM,GACP,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,MAAM,MAAM,GAAG,sBAAc,
|
|
1
|
+
{"version":3,"sources":["actions/create.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,oCAA0C;AAgB1C,SAAsB,MAAM,CAAC,GAAY,EAAE,IAAU;;QACnD,MAAM,EACJ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,MAAM,EAAE,IAAI,GAAG,EAAE,EACjB,MAAM,GACP,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9C,IAAI,KAAY,CAAC;QACjB,IAAI;YACF,IAAI,UAAU,IAAI,aAAa,EAAE;gBAC/B,MAAM,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACxD,IAAI,CAAC,CAAC,UAAU,YAAY,eAAe,CAAC,EAAE;oBAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,cAAc,2BAA2B,CAAC,CAAC;iBAC/D;gBACD,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;gBAChD,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACnD;iBAAM;gBACL,MAAM,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACpD,KAAK,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACrD;YACD,MAAM,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;YACjB,MAAM,IAAI,EAAE,CAAC;SACd;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CAAA;AAjCD,wBAiCC;AAED,kBAAe,MAAM,CAAC","file":"create.js","sourcesContent":["import _ from 'lodash';\nimport { Context, Next } from '..';\nimport { Model } from '@nocobase/database';\nimport { filterByFields } from '../utils';\n\n/**\n * 新增数据\n *\n * Signle\n * HasMany\n *\n * resource action 层面一般不开放 HasOne、BelongsTo、BelongsToMany 的新增数据操作\n * 如果需要这类操作建议使用 model.updateAssociations 方法\n *\n * TODO 字段验证\n *\n * @param ctx\n * @param next\n */\nexport async function create(ctx: Context, next: Next) {\n const {\n associated,\n resourceField,\n associatedName,\n resourceName,\n values: data = {},\n fields,\n } = ctx.action.params;\n const values = filterByFields(data, fields);\n const transaction = await ctx.db.sequelize.transaction();\n const options = { transaction, context: ctx };\n let model: Model;\n try {\n if (associated && resourceField) {\n const AssociatedModel = ctx.db.getModel(associatedName);\n if (!(associated instanceof AssociatedModel)) {\n throw new Error(`${associatedName} associated model invalid`);\n }\n const { create } = resourceField.getAccessors();\n model = await associated[create](values, options);\n } else {\n const ResourceModel = ctx.db.getModel(resourceName);\n model = await ResourceModel.create(values, options);\n }\n await model.updateAssociations(values, options);\n await transaction.commit();\n ctx.body = model;\n await next();\n } catch (error) {\n await transaction.rollback();\n throw error;\n }\n}\n\nexport default create;\n"]}
|
package/lib/actions/sort.js
CHANGED
|
@@ -156,7 +156,7 @@ function sort(ctx, next) {
|
|
|
156
156
|
targetScopeWhere = Object.assign(Object.assign({}, sourceScopeWhere), targetScope);
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
const sameScope = database_1.whereCompare(sourceScopeWhere, targetScopeWhere);
|
|
159
|
+
const sameScope = (0, database_1.whereCompare)(sourceScopeWhere, targetScopeWhere);
|
|
160
160
|
const updates = Object.assign({}, targetScopeWhere);
|
|
161
161
|
|
|
162
162
|
if (targetObject) {
|
package/lib/actions/sort.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["actions/sort.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAiD;AAGjD,iDAM4B;AAQ5B,SAAsB,IAAI,CAAC,GAAY,EAAE,IAAU;;;QACjD,MAAM,KASF,GAAG,CAAC,MAAM,CAAC,MAAM,EATf,EACJ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,MAAM,GAAG,EAAE,OAEQ,EADhB,MAAM,cARL,2GASL,CAAoB,CAAC;QAEtB,IAAI,UAAU,IAAI,aAAa,EAAE;YAC/B,IAAI,aAAa,YAAY,iBAAM,IAAI,aAAa,YAAY,oBAAS,EAAE;gBACzE,MAAM,IAAI,KAAK,CAAC,oBAAoB,YAAY,eAAe,cAAc,oBAAoB,CAAC,CAAC;aACpG;YAED,IAAI,aAAa,YAAY,wBAAa,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;aACrF;SACF;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,WAAW,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA,IAAI,MAAM,CAAC;QAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,
|
|
1
|
+
{"version":3,"sources":["actions/sort.ts"],"names":[],"mappings":"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","file":"sort.js","sourcesContent":["import { Utils, Op, Sequelize } from 'sequelize';\nimport _ from 'lodash';\nimport { Context, Next } from '..';\nimport {\n HASONE,\n HASMANY,\n BELONGSTO,\n BELONGSTOMANY,\n whereCompare\n} from '@nocobase/database';\n\n/**\n * 人工排序\n * \n * 同 scope 时,往前挪动,插入到目标位置前面;往后挪动,插入到目标位置后面\n * 不同 scope 时,挪动到往目标位置时,默认插入后面位置,可指定 insertBefore\n */\nexport async function sort(ctx: Context, next: Next) {\n const {\n resourceName,\n resourceKey,\n resourceField,\n associatedName,\n associatedKey,\n associated,\n values = {},\n ...others\n } = ctx.action.params;\n\n if (associated && resourceField) {\n if (resourceField instanceof HASONE || resourceField instanceof BELONGSTO) {\n throw new Error(`the association (${resourceName} belongs to ${associatedName}) cannot be sorted`);\n }\n // TODO(feature)\n if (resourceField instanceof BELONGSTOMANY) {\n throw new Error('sorting for belongs to many association has not been implemented');\n }\n }\n\n const Model = ctx.db.getModel(resourceName);\n const table = ctx.db.getTable(resourceName);\n const { primaryKeyAttribute } = Model;\n\n const sourceId = others.sourceId || resourceKey;\n const field = others.sortField || values?.sortField || values?.field || 'sort';\n const targetId = others.targetId || values?.targetId || values?.target?.[primaryKeyAttribute];\n const method = others.method || values?.method;\n const insertAfter = method === 'insertAfter';\n const sticky = others.sticky || values?.sticky || method === 'prepend';\n const targetScope = others.targetScope || values?.targetScope;\n\n if (!sourceId) {\n throw new Error('source id invalid');\n }\n\n if (!(sticky || targetId || targetScope)) {\n throw new Error('target id/scope invalid');\n }\n\n const sortField = table.getField(field);\n\n if (!sortField) {\n return next();\n }\n\n const { name: sortAttr, scope = [] } = sortField.options;\n\n const transaction = await ctx.db.sequelize.transaction();\n\n const where = {};\n\n if (associated && resourceField instanceof HASMANY) {\n where[resourceField.options.foreignKey] = associatedKey;\n }\n\n // 找到操作对象\n const source = await Model.findOne({\n where: {\n ...where,\n [primaryKeyAttribute]: sourceId\n },\n transaction\n });\n\n if (!source) {\n await transaction.rollback();\n throw new Error(`resource ${sourceId} does not exist`);\n }\n\n const sourceScopeWhere = source.getValuesByFieldNames(scope);\n\n let targetScopeWhere: any;\n let targetObject;\n\n if (targetId) {\n targetObject = await Model.findByPk(targetId, { transaction });\n if (!targetObject) {\n await transaction.rollback();\n throw new Error(`resource ${targetId} does not exist`);\n }\n targetScopeWhere = targetObject.getValuesByFieldNames(scope);\n } else {\n targetScopeWhere = { ...sourceScopeWhere, ...targetScope };\n }\n\n const sameScope = whereCompare(sourceScopeWhere, targetScopeWhere);\n const updates = { ...targetScopeWhere };\n\n if (targetObject) {\n let increment: number;\n const updateWhere = { ...targetScopeWhere };\n if (sameScope) {\n const direction = source[sortAttr] < targetObject[sortAttr] ? {\n sourceOp: Op.gt,\n targetOp: insertAfter ? Op.lt : Op.lte,\n increment: -1\n } : {\n sourceOp: Op.lt,\n targetOp: insertAfter ? Op.gt : Op.gte,\n increment: 1\n };\n\n increment = direction.increment;\n\n Object.assign(updateWhere, {\n [sortAttr]: {\n [direction.sourceOp]: source[sortAttr],\n [direction.targetOp]: targetObject[sortAttr]\n }\n });\n } else {\n increment = 1;\n Object.assign(updateWhere, {\n [sortAttr]: {\n [insertAfter ? Op.gt : Op.gte]: targetObject[sortAttr]\n }\n });\n }\n\n console.log({ insertAfter, updateWhere })\n\n await Model.increment(sortAttr, {\n by: increment,\n where: updateWhere,\n transaction\n });\n\n Object.assign(updates, {\n [sortAttr]: insertAfter ? targetObject[sortAttr] + 1 : targetObject[sortAttr]\n });\n } else {\n Object.assign(updates, {\n [sortAttr]: await sortField.getNextValue({\n next: sticky ? 'min' : 'max',\n where: targetScopeWhere,\n transaction\n })\n });\n }\n\n await source.update(updates, { transaction });\n\n await transaction.commit();\n\n ctx.body = source;\n\n await next();\n}\n\nexport default sort;\n"]}
|
package/lib/actions/update.js
CHANGED
|
@@ -84,7 +84,7 @@ function update(ctx, next) {
|
|
|
84
84
|
resourceKeyAttribute = _ctx$action$params.resourceKeyAttribute,
|
|
85
85
|
fields = _ctx$action$params.fields,
|
|
86
86
|
data = _ctx$action$params.values;
|
|
87
|
-
const values = utils_1.filterByFields(data, fields);
|
|
87
|
+
const values = (0, utils_1.filterByFields)(data, fields);
|
|
88
88
|
const transaction = yield ctx.db.sequelize.transaction();
|
|
89
89
|
const options = {
|
|
90
90
|
transaction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["actions/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAAuB;AAEvB,iDAO4B;AAC5B,oCAA0C;AAU1C,SAAsB,MAAM,CAAC,GAAY,EAAE,IAAU;;QACnD,MAAM,EACJ,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EAEX,oBAAoB,EACpB,MAAM,EACN,MAAM,EAAE,IAAI,EACb,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,MAAM,MAAM,GAAG,sBAAc,
|
|
1
|
+
{"version":3,"sources":["actions/update.ts"],"names":[],"mappings":"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","file":"update.js","sourcesContent":["import _ from 'lodash';\nimport { Context, Next } from '..';\nimport {\n Model,\n HASONE,\n HASMANY,\n BELONGSTO,\n BELONGSTOMANY,\n whereCompare\n} from '@nocobase/database';\nimport { filterByFields } from '../utils';\n\n/**\n * 更新数据\n *\n * TODO 字段验证\n * \n * @param ctx \n * @param next \n */\nexport async function update(ctx: Context, next: Next) {\n const {\n associated,\n associatedName,\n resourceField,\n resourceName,\n resourceKey,\n // TODO(question): 这个属性从哪设置的?\n resourceKeyAttribute,\n fields,\n values: data\n } = ctx.action.params;\n const values = filterByFields(data, fields);\n const transaction = await ctx.db.sequelize.transaction();\n const options = { transaction, context: ctx };\n if (associated && resourceField) {\n const AssociatedModel = ctx.db.getModel(associatedName);\n if (!(associated instanceof AssociatedModel)) {\n await transaction.rollback();\n throw new Error(`${associatedName} associated model invalid`);\n }\n const { get: getAccessor } = resourceField.getAccessors();\n if (resourceField instanceof HASONE || resourceField instanceof BELONGSTO) {\n let model: Model = await associated[getAccessor](options);\n if (model) {\n // @ts-ignore\n await model.update(values, options);\n await model.updateAssociations(values, options);\n ctx.body = model;\n }\n } else if (resourceField instanceof HASMANY || resourceField instanceof BELONGSTOMANY) {\n const TargetModel = ctx.db.getModel(resourceField.getTarget());\n const [model]: Model[] = await associated[getAccessor]({\n ...options,\n where: {\n [resourceKeyAttribute || resourceField.options.targetKey || TargetModel.primaryKeyAttribute]: resourceKey,\n }\n });\n\n if (resourceField instanceof BELONGSTOMANY) {\n const throughName = resourceField.getThroughName();\n if (typeof values[throughName] === 'object') {\n const ThroughModel = resourceField.getThroughModel();\n const throughValues = values[throughName];\n const { foreignKey, sourceKey, otherKey } = resourceField.options;\n const through = await ThroughModel.findOne({\n where: {\n [foreignKey]: associated[sourceKey],\n [otherKey]: resourceKey,\n },\n transaction\n });\n // TODO: 中间表的 Model 有问题,关联数据更新有 BUG\n // await through.updateAssociations(throughValues, options);\n await through.update(throughValues, options);\n delete values[throughName];\n }\n }\n if (!_.isEmpty(values)) {\n // @ts-ignore\n await model.update(values, options);\n await model.updateAssociations(values, options);\n }\n ctx.body = model;\n }\n } else {\n const Model = ctx.db.getModel(resourceName);\n const model = await Model.findOne({\n ...options,\n where: {\n [resourceKeyAttribute || Model.primaryKeyAttribute]: resourceKey,\n }\n });\n // @ts-ignore\n await model.update(values, options);\n // @ts-ignore\n await model.updateAssociations(values, options);\n ctx.body = model;\n }\n await transaction.commit();\n await next();\n}\n\nexport default update;\n"]}
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/actions",
|
|
3
|
-
"version": "0.5.0-alpha.
|
|
3
|
+
"version": "0.5.0-alpha.34",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./lib/index.js",
|
|
7
7
|
"types": "./lib/index.d.ts",
|
|
8
8
|
"scripts": {},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@nocobase/database": "^0.5.0-alpha.
|
|
11
|
-
"@nocobase/resourcer": "^0.5.0-alpha.
|
|
10
|
+
"@nocobase/database": "^0.5.0-alpha.34",
|
|
11
|
+
"@nocobase/resourcer": "^0.5.0-alpha.34"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@nocobase/test": "^0.5.0-alpha.
|
|
14
|
+
"@nocobase/test": "^0.5.0-alpha.34"
|
|
15
15
|
},
|
|
16
16
|
"repository": {
|
|
17
17
|
"type": "git",
|
|
18
18
|
"url": "git+https://github.com/nocobase/nocobase.git",
|
|
19
19
|
"directory": "packages/actions"
|
|
20
20
|
},
|
|
21
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "11cded6153bab633fb0b7415c33b4c3c369c2427"
|
|
22
22
|
}
|