This commit is contained in:
wenjiarui 2023-08-03 18:21:18 +08:00
parent e55b0248d4
commit 0596bff5e3
2 changed files with 182 additions and 83 deletions

View File

@ -133,61 +133,107 @@ var triggers = [
name: '当用户被激活时将所有的parasite作废',
entity: 'user',
action: 'activate',
when: 'before',
fn: function (_a) {
when: 'after',
fn: function (_a, context) {
var operation = _a.operation;
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var _b, data, filter, _c;
var _d, _e, _f;
return tslib_1.__generator(this, function (_g) {
switch (_g.label) {
var _b, data, filter, parasiteList, parasiteIds, _c, _d, _e, _f, _g, _h;
var _j, _k;
return tslib_1.__generator(this, function (_l) {
switch (_l.label) {
case 0:
_b = operation, data = _b.data, filter = _b.filter;
(0, assert_1.default)(!(data instanceof Array));
_c = data;
_d = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
return [4 /*yield*/, context.select('parasite', {
data: {
id: 1,
},
filter: {
user: filter,
expired: false,
},
}, {})];
case 1:
_d.id = _g.sent(),
_d.action = 'update';
_e = {
expired: true
};
_f = {};
parasiteList = _l.sent();
parasiteIds = parasiteList.map(function (ele) { return ele.id; });
if (!(parasiteIds.length > 0)) return [3 /*break*/, 6];
_d = (_c = context).operate;
_e = ['parasite'];
_j = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 2:
_c.parasite$user = (_d.data = (_e.token$entity = (_f.id = _g.sent(),
_f.action = 'disable',
_f.data = {},
_f.filter = {
ableState: 'enabled',
parasite: {
userId: {
$in: {
entity: 'user',
data: {
id: 1,
},
filter: filter,
}
case 2: return [4 /*yield*/, _d.apply(_c, _e.concat([(_j.id = _l.sent(),
_j.action = 'update',
_j.data = {
expired: true,
},
_j.filter = {
id: {
$in: parasiteIds
}
}
},
_f),
_e),
_d.filter = {
userId: {
$in: {
entity: 'user',
data: {
id: 1,
},
filter: filter,
},
_j), { blockTrigger: true }]))];
case 3:
_l.sent();
_g = (_f = context).operate;
_h = ['token'];
_k = {};
return [4 /*yield*/, (0, uuid_1.generateNewIdAsync)()];
case 4: return [4 /*yield*/, _g.apply(_f, _h.concat([(_k.id = _l.sent(),
_k.action = 'disable',
_k.data = {
expired: true,
},
_k.filter = {
ableState: 'enabled',
entity: 'parasite',
entityId: {
$in: parasiteIds
}
}
},
_d);
return [2 /*return*/, 1];
},
_k), { blockTrigger: true }]))];
case 5:
_l.sent();
_l.label = 6;
case 6:
// operation的级联写法目前不能正确解析上层对象对下层对象的filter关系
// data.parasite$user = {
// id: await generateNewIdAsync(),
// action: 'update',
// data: {
// expired: true,
// token$entity: {
// id: await generateNewIdAsync(),
// action: 'disable',
// data: {},
// filter: {
// ableState: 'enabled',
// parasite: {
// userId: {
// $in: {
// entity: 'user',
// data: {
// id: 1,
// },
// filter,
// }
// }
// }
// }
// },
// },
// filter: {
// userId: {
// $in: {
// entity: 'user',
// data: {
// id: 1,
// },
// filter,
// }
// }
// }
// };
return [2 /*return*/, 1];
}
});
});

View File

@ -119,47 +119,100 @@ const triggers: Trigger<EntityDict, 'user', RuntimeCxt>[] = [
name: '当用户被激活时将所有的parasite作废',
entity: 'user',
action: 'activate',
when: 'before',
fn: async ({ operation }) => {
when: 'after',
fn: async ({ operation }, context) => {
const { data, filter } = operation as EntityDict['user']['Update'];
assert(!(data instanceof Array));
data.parasite$user = {
id: await generateNewIdAsync(),
action: 'update',
data: {
expired: true,
token$entity: {
id: await generateNewIdAsync(),
action: 'disable',
data: {},
filter: {
ableState: 'enabled',
parasite: {
userId: {
$in: {
entity: 'user',
data: {
id: 1,
},
filter,
}
}
}
}
const parasiteList = await context.select(
'parasite',
{
data: {
id: 1,
},
filter: {
user: filter,
expired: false,
},
},
filter: {
userId: {
$in: {
entity: 'user',
data: {
id: 1,
},
filter,
}
}
}
};
{}
);
const parasiteIds = parasiteList.map((ele) => ele.id);
if (parasiteIds.length > 0) {
await context.operate(
'parasite',
{
id: await generateNewIdAsync(),
action: 'update',
data: {
expired: true,
},
filter: {
id: {
$in: parasiteIds
}
},
},
{ blockTrigger: true }
);
await context.operate(
'token',
{
id: await generateNewIdAsync(),
action: 'disable',
data: {
expired: true,
},
filter: {
ableState: 'enabled',
entity: 'parasite',
entityId: {
$in: parasiteIds as string[]
}
},
},
{ blockTrigger: true }
);
}
// operation的级联写法目前不能正确解析上层对象对下层对象的filter关系
// data.parasite$user = {
// id: await generateNewIdAsync(),
// action: 'update',
// data: {
// expired: true,
// token$entity: {
// id: await generateNewIdAsync(),
// action: 'disable',
// data: {},
// filter: {
// ableState: 'enabled',
// parasite: {
// userId: {
// $in: {
// entity: 'user',
// data: {
// id: 1,
// },
// filter,
// }
// }
// }
// }
// },
// },
// filter: {
// userId: {
// $in: {
// entity: 'user',
// data: {
// id: 1,
// },
// filter,
// }
// }
// }
// };
return 1;
},