Navigation Menu

Skip to content

Commit

Permalink
feat: composable microservices
Browse files Browse the repository at this point in the history
  • Loading branch information
kalinkrustev committed Feb 3, 2019
1 parent f014dc9 commit 31c7c14
Show file tree
Hide file tree
Showing 11 changed files with 367 additions and 45 deletions.
10 changes: 0 additions & 10 deletions agw.js

This file was deleted.

File renamed without changes.
4 changes: 4 additions & 0 deletions api/sql/seed.js
@@ -0,0 +1,4 @@
var path = require('path');
module.exports = {
schema: [{path: path.join(__dirname, 'seed'), linkSP: true}]
};
60 changes: 60 additions & 0 deletions api/sql/seed/750$nomenclaturesSEED.sql
@@ -0,0 +1,60 @@
DECLARE @itemTypeId BIGINT
-- region
SET @itemTypeId = (SELECT itemTypeId FROM [core].itemType WHERE name = 'region')
IF @itemTypeId IS NULL
BEGIN
INSERT INTO [core].itemType([alias], [name], [description], [table], [keyColumn], [nameColumn])
VALUES ('region', 'region', 'region', 'region', 'regionId', 'regionId')
SET @itemTypeId = SCOPE_IDENTITY()
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'West' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'West', 'West', NULL, NULL, 1, NULL)
END
-- city
SET @itemTypeId = (SELECT itemTypeId FROM [core].itemType WHERE name = 'city')
IF @itemTypeId IS NULL
BEGIN
INSERT INTO [core].itemType([alias], [name], [description], [table], [keyColumn], [nameColumn])
VALUES ('city', 'city', 'city', 'city', 'cityId', 'cityId')
SET @itemTypeId = SCOPE_IDENTITY()
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'Seattle' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'Seattle', 'Seattle', NULL, NULL, 1, NULL)
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'Redmond' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'Redmond', 'Redmond', NULL, NULL, 1, NULL)
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'San Francisco' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'San Francisco', 'San Francisco', NULL, NULL, 1, NULL)
END
-- channel
SET @itemTypeId = (SELECT itemTypeId FROM [core].itemType WHERE name = 'channel')
IF @itemTypeId IS NULL
BEGIN
INSERT INTO [core].itemType([alias], [name], [description], [table], [keyColumn], [nameColumn])
VALUES ('channel', 'channel', 'channel', 'channel', 'channelId', 'channelId')
SET @itemTypeId = SCOPE_IDENTITY()
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'USSD / SMS' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'USSD / SMS', 'USSD / SMS', NULL, NULL, 1, NULL)
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'Self service app' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'Self service app', 'Self service app', NULL, NULL, 1, NULL)
END
IF NOT EXISTS (SELECT 1 FROM [core].itemName WHERE itemName = 'Third Party' AND itemTypeId = @itemTypeId)
BEGIN
INSERT INTO [core].itemName([itemTypeId], [itemName], [itemCode], [itemSyncId], [organizationId], [isEnabled], [itemOrder])
VALUES (@itemTypeId, 'Third Party', 'Third Party', NULL, NULL, 1, NULL)
END
138 changes: 138 additions & 0 deletions api/sql/seed/751$systemRolesSEED.sql
@@ -0,0 +1,138 @@
DECLARE @itemNameTranslationTT core.itemNameTranslationTT
DECLARE @meta core.metaDataTT
DECLARE @enLanguageId [tinyint] = (SELECT languageId FROM [core].[language] WHERE iso2Code = 'en');

INSERT INTO @itemNameTranslationTT(itemCode, itemName, itemNameTranslation) VALUES ('rule', 'Rule Management', 'Rule Management')

EXEC core.[itemNameTranslation.upload] @itemNameTranslationTT = @itemNameTranslationTT,
@languageId = @enLanguageId, @organizationId = NULL, @itemType = 'roleCategory', @meta = @meta

DECLARE @rulesId BIGINT = (SELECT itemNameId FROM [core].[itemName] i JOIN [core].[itemType] it ON i.itemTypeId = it.itemTypeId WHERE it.[name] = 'roleCategory' AND itemCode = 'rule')

DECLARE @rulesList BIGINT, @rulesAdd BIGINT, @rulesEdit BIGINT, @rulesDelete BIGINT

--View Rules
IF NOT EXISTS(SELECT * FROM [user].[role] WHERE name = 'List Rules')
BEGIN
INSERT INTO core.actor(actorType, isEnabled) VALUES('role', 1)
SET @rulesList = SCOPE_IDENTITY()
INSERT INTO [user].[role](actorId, name, [description], isEnabled, isDeleted, fieldOfWorkId, isSystem)
VALUES(@rulesList, 'List Rules', 'List Rules', 1, 0, @rulesId, 1)
END
ELSE
SET @rulesList = (SELECT actorId FROM [user].[role] WHERE name = 'List Rules')

MERGE INTO [user].actorAction AS target
USING
(VALUES
(@rulesList, 'rule.rule.nav', '%', 1),
(@rulesList, 'customer.organization.graphFetch', '%', 1),
(@rulesList, 'customer.organization.list', '%', 1),
(@rulesList, 'rule.rule.fetch', '%', 1),
(@rulesList, 'rule.item.fetch', '%', 1),
(@rulesList, 'core.itemName.fetch', '%', 1),
(@rulesList, 'core.itemCode.fetch', '%', 1),
(@rulesList, 'customer.organization.fetch', '%', 1),
(@rulesList, 'user.role.fetch', '%', 1),
(@rulesList, 'db/rule.rule.fetch', '%', 1)
) AS source (actorId, actionId, objectId, [level])
ON target.actorId = source.actorId AND target.actionId = source.actionId AND target.objectId = source.objectId AND target.[level] = source.[level]
WHEN NOT MATCHED BY TARGET THEN
INSERT (actorId, actionId, objectId, [level])
VALUES (actorId, actionId, objectId, [level]);

--Create Rule
IF NOT EXISTS(SELECT * FROM [user].[role] WHERE name = 'Create Rule')
BEGIN
INSERT INTO core.actor(actorType, isEnabled) VALUES('role', 1)
SET @rulesAdd = SCOPE_IDENTITY()
INSERT INTO [user].[role](actorId, name, [description], isEnabled, isDeleted, fieldOfWorkId, isSystem)
VALUES(@rulesAdd, 'Create Rule', 'Create Rule', 1, 0, @rulesId, 1)
END
ELSE
SET @rulesAdd = (SELECT actorId FROM [user].[role] WHERE name = 'Create Rule')

MERGE INTO [user].actorAction AS target
USING
(VALUES
(@rulesAdd, 'rule.rule.nav', '%', 1),
(@rulesAdd, 'customer.organization.graphFetch', '%', 1),
(@rulesAdd, 'customer.organization.list', '%', 1),
(@rulesAdd, 'rule.rule.fetch', '%', 1),
(@rulesAdd, 'rule.rule.add', '%', 1),
(@rulesAdd, 'rule.item.fetch', '%', 1),
(@rulesAdd, 'core.itemName.fetch', '%', 1),
(@rulesAdd, 'core.itemCode.fetch', '%', 1),
(@rulesAdd, 'customer.organization.fetch', '%', 1),
(@rulesAdd, 'user.role.fetch', '%', 1),
(@rulesAdd, 'db/rule.rule.fetch', '%', 1),
(@rulesAdd, 'db/rule.rule.add', '%', 1)
) AS source (actorId, actionId, objectId, [level])
ON target.actorId = source.actorId AND target.actionId = source.actionId AND target.objectId = source.objectId AND target.[level] = source.[level]
WHEN NOT MATCHED BY TARGET THEN
INSERT (actorId, actionId, objectId, [level])
VALUES (actorId, actionId, objectId, [level]);

--Edit Rule
IF NOT EXISTS(SELECT * FROM [user].[role] WHERE name = 'Edit Rule')
BEGIN
INSERT INTO core.actor(actorType, isEnabled) VALUES('role', 1)
SET @rulesEdit = SCOPE_IDENTITY()
INSERT INTO [user].[role](actorId, name, [description], isEnabled, isDeleted, fieldOfWorkId, isSystem)
VALUES(@rulesEdit, 'Edit Rule', 'Edit Rule', 1, 0, @rulesId, 1)
END
ELSE
SET @rulesEdit = (SELECT actorId FROM [user].[role] WHERE name = 'Edit Rule')

MERGE INTO [user].actorAction AS target
USING
(VALUES
(@rulesEdit, 'rule.rule.nav', '%', 1),
(@rulesEdit, 'customer.organization.graphFetch', '%', 1),
(@rulesEdit, 'customer.organization.list', '%', 1),
(@rulesEdit, 'rule.rule.fetch', '%', 1),
(@rulesEdit, 'rule.item.fetch', '%', 1),
(@rulesEdit, 'core.itemName.fetch', '%', 1),
(@rulesEdit, 'core.itemCode.fetch', '%', 1),
(@rulesEdit, 'customer.organization.fetch', '%', 1),
(@rulesEdit, 'user.role.fetch', '%', 1),
(@rulesEdit, 'db/rule.rule.fetch', '%', 1),
(@rulesEdit, 'db/rule.rule.edit', '%', 1),
(@rulesEdit, 'rule.rule.edit', '%', 1)
) AS source (actorId, actionId, objectId, [level])
ON target.actorId = source.actorId AND target.actionId = source.actionId AND target.objectId = source.objectId AND target.[level] = source.[level]
WHEN NOT MATCHED BY TARGET THEN
INSERT (actorId, actionId, objectId, [level])
VALUES (actorId, actionId, objectId, [level]);

--Delete Rule
IF NOT EXISTS(SELECT * FROM [user].[role] WHERE name = 'Delete Rule')
BEGIN
INSERT INTO core.actor(actorType, isEnabled) VALUES('role', 1)
SET @rulesDelete = SCOPE_IDENTITY()
INSERT INTO [user].[role](actorId, name, [description], isEnabled, isDeleted, fieldOfWorkId, isSystem)
VALUES(@rulesDelete, 'Delete Rule', 'Delete Rule', 1, 0, @rulesId, 1)
END
ELSE
SET @rulesDelete = (SELECT actorId FROM [user].[role] WHERE name = 'Delete Rule')

MERGE INTO [user].actorAction AS target
USING
(VALUES
(@rulesDelete, 'rule.rule.nav', '%', 1),
(@rulesDelete, 'customer.organization.graphFetch', '%', 1),
(@rulesDelete, 'customer.organization.list', '%', 1),
(@rulesDelete, 'rule.rule.fetch', '%', 1),
(@rulesDelete, 'rule.item.fetch', '%', 1),
(@rulesDelete, 'core.itemName.fetch', '%', 1),
(@rulesDelete, 'core.itemCode.fetch', '%', 1),
(@rulesDelete, 'customer.organization.fetch', '%', 1),
(@rulesDelete, 'user.role.fetch', '%', 1),
(@rulesDelete, 'db/rule.rule.fetch', '%', 1),
(@rulesDelete, 'db/rule.rule.remove', '%', 1),
(@rulesDelete, 'rule.rule.remove', '%', 1)
) AS source (actorId, actionId, objectId, [level])
ON target.actorId = source.actorId AND target.actionId = source.actionId AND target.objectId = source.objectId AND target.[level] = source.[level]
WHEN NOT MATCHED BY TARGET THEN
INSERT (actorId, actionId, objectId, [level])
VALUES (actorId, actionId, objectId, [level]);
11 changes: 0 additions & 11 deletions esa.js

This file was deleted.

10 changes: 0 additions & 10 deletions eso.js

This file was deleted.

49 changes: 36 additions & 13 deletions index.js
@@ -1,13 +1,36 @@
module.exports = () => ({
ports: [],
modules: {
rule: require('./api/script'),
'db/rule': require('./api/sql')
},
validations: {
rule: require('./validations')
},
errors: [
require('./errors')
]
});
module.exports = () => function utRule() {
return [
function adapter() {
return {
modules: {
'db/rule': require('./api/sql/schema'),
ruleSeed: require('./api/sql/seed'),
ruleTest: () => require('./test/schema')
},
errors: [
require('./errors')
]
};
},
function orchestrator() {
return {
ports: [
require('ut-dispatch-db')(['rule'])
],
modules: {
rule: require('./api/script')
},
errors: [
require('./errors')
]
};
},
function gateway() {
return {
validations: {
rule: require('./validations')
}
};
}
];
};
4 changes: 3 additions & 1 deletion package.json
Expand Up @@ -30,7 +30,9 @@
"ut-front": "^8.4.0",
"ut-front-react": "^10.4.1",
"ut-bus": "^6.3.0",
"ut-history": "^1.3.0"
"ut-history": "^1.3.0",
"ut-dispatch-db": "^1.1.0",
"ut-run": "^9.8.0-rc-godfather.9"
},
"description": "UT Rule",
"scripts": {
Expand Down
4 changes: 4 additions & 0 deletions test/schema.js
@@ -0,0 +1,4 @@
const path = require('path');
module.exports = {
schema: [{path: path.join(__dirname, 'schema'), linkSP: true}]
};

0 comments on commit 31c7c14

Please sign in to comment.