Skip to content

Commit d2f1b29

Browse files
authored
Merge pull request #164 from switcherapi/patch_162
Patch 162
2 parents 0294f94 + 31959cd commit d2f1b29

File tree

9 files changed

+65
-47
lines changed

9 files changed

+65
-47
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@
5757
"jsonwebtoken": "^8.5.1",
5858
"moment": "^2.29.1",
5959
"mongodb": "^3.3.3",
60-
"mongoose": "^5.11.9",
61-
"switcher-client": "^3.0.0",
62-
"validator": "^12.0.0"
60+
"mongoose": "^5.12.7",
61+
"switcher-client": "^3.0.1",
62+
"validator": "^13.6.0"
6363
},
6464
"devDependencies": {
6565
"@babel/cli": "^7.7.4",

src/controller/component.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ export async function getComponents(where) {
1313
return Component.find(where);
1414
}
1515

16+
export async function getTotalComponentsByDomainId(domain) {
17+
return Component.find({ domain }).countDocuments();
18+
}
19+
1620
export async function createComponent(args, admin) {
1721
let component = new Component({
1822
...args,

src/controller/config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ export async function getConfigs(where) {
2323
return Config.find(where);
2424
}
2525

26+
export async function getTotalConfigsByDomainId(domain) {
27+
return Config.find({ domain }).countDocuments();
28+
}
29+
2630
export async function createConfig(args, admin) {
2731
// validates account plan permissions
2832
const group = await getGroupConfigById(args.group);

src/controller/domain.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ export async function getDomain(where) {
2020
return response(domain, 'Domain not found');
2121
}
2222

23+
export async function getTotalDomainsByOwner(owner) {
24+
await Domain.find({ owner }).countDocuments();
25+
}
26+
2327
export async function createDomain(args, admin) {
2428
let domain = new Domain({
2529
...args,

src/controller/environment.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ export async function getEnvironment(where) {
4343
return response(environment, 'Environment not found');
4444
}
4545

46+
export async function getTotalEnvByDomainId(domain) {
47+
return Environment.find({ domain }).countDocuments();
48+
}
49+
4650
export async function createEnvironment(args, admin) {
4751
let environment = new Environment({
4852
...args,

src/controller/group-config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ export async function getGroupConfigs(where) {
2121
return GroupConfig.find(where);
2222
}
2323

24+
export async function getGroupsByDomainId(domain) {
25+
await GroupConfig.find({ domain }).countDocuments();
26+
}
27+
2428
export async function createGroup(args, admin) {
2529
let groupconfig = new GroupConfig({
2630
...args,

src/controller/team.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export async function getTeamInvite(where, validate = true) {
5858
return teamInvite;
5959
}
6060

61+
export async function getTotalTeamsByDomainId(domain) {
62+
return Team.find({ domain }).countDocuments();
63+
}
64+
6165
export async function createTeam(args, admin, defaultActions) {
6266
let team = new Team({
6367
...args
Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import Switcher from 'switcher-client';
2-
import Domain from '../models/domain';
3-
import GroupConfig from '../models/group-config';
4-
import { Config } from '../models/config';
5-
import Component from '../models/component';
6-
import { Environment, EnvType } from '../models/environment';
7-
import { Team } from '../models/team';
1+
import { Switcher, checkNumeric, checkValue } from 'switcher-client';
2+
import { EnvType } from '../models/environment';
83
import { FeatureUnavailableError } from '../exceptions';
4+
import { getDomainById, getTotalDomainsByOwner } from '../controller/domain';
5+
import { getGroupsByDomainId } from '../controller/group-config';
6+
import { getTotalConfigsByDomainId } from '../controller/config';
7+
import { getTotalComponentsByDomainId } from '../controller/component';
8+
import { getTotalEnvByDomainId } from '../controller/environment';
9+
import { getTotalTeamsByDomainId } from '../controller/team';
910

1011
const apiKey = process.env.SWITCHER_API_KEY;
1112
const environment = process.env.SWITCHER_API_ENVIRONMENT;
@@ -26,79 +27,73 @@ export async function checkDomain(req) {
2627
if (process.env.SWITCHER_API_ENABLE != 'true')
2728
return;
2829

29-
const total = await Domain.find({ owner: req.admin._id }).countDocuments();
30+
const total = await getTotalDomainsByOwner(req.admin._id);
3031
switcherFlagResult(await switcher.isItOn('ELEMENT_CREATION', [
31-
Switcher.StrategiesType.VALUE, `domain#${req.admin._id}`,
32-
Switcher.StrategiesType.NUMERIC, total]
33-
), 'Domain limit has been reached.');
32+
checkValue(`domain#${req.admin._id}`),
33+
checkNumeric(total)]), 'Domain limit has been reached.');
3434
}
3535

3636
export async function checkGroup(domain) {
3737
if (process.env.SWITCHER_API_ENABLE != 'true')
3838
return;
3939

40-
const total = await GroupConfig.find({ domain: domain._id }).countDocuments();
40+
const total = await getGroupsByDomainId(domain._id);
4141
switcherFlagResult(await switcher.isItOn('ELEMENT_CREATION', [
42-
Switcher.StrategiesType.VALUE, `group#${domain.owner}`,
43-
Switcher.StrategiesType.NUMERIC, total]
44-
), 'Group limit has been reached.');
42+
checkValue(`group#${domain.owner}`),
43+
checkNumeric(total)]), 'Group limit has been reached.');
4544
}
4645

4746
export async function checkSwitcher(group) {
4847
if (process.env.SWITCHER_API_ENABLE != 'true')
4948
return;
5049

51-
const total = await Config.find({ domain: group.domain }).countDocuments();
52-
const { owner } = await Domain.findById(group.domain).lean();
50+
const total = await getTotalConfigsByDomainId(group.domain);
51+
const { owner } = await getDomainById(group.domain);
5352
switcherFlagResult(await switcher.isItOn('ELEMENT_CREATION', [
54-
Switcher.StrategiesType.VALUE, `switcher#${owner}`,
55-
Switcher.StrategiesType.NUMERIC, total]
56-
), 'Switcher limit has been reached.');
53+
checkValue(`switcher#${owner}`),
54+
checkNumeric(total)]), 'Switcher limit has been reached.');
5755
}
5856

5957
export async function checkComponent(domain) {
6058
if (process.env.SWITCHER_API_ENABLE != 'true')
6159
return;
6260

63-
const total = await Component.find({ domain }).countDocuments();
64-
const { owner } = await Domain.findById(domain).lean();
61+
const total = await getTotalComponentsByDomainId(domain);
62+
const { owner } = await getDomainById(domain);
6563
switcherFlagResult(await switcher.isItOn('ELEMENT_CREATION', [
66-
Switcher.StrategiesType.VALUE, `component#${owner}`,
67-
Switcher.StrategiesType.NUMERIC, total]
68-
), 'Component limit has been reached.');
64+
checkValue(`component#${owner}`),
65+
checkNumeric(total)]), 'Component limit has been reached.');
6966
}
7067

7168
export async function checkEnvironment(domain) {
7269
if (process.env.SWITCHER_API_ENABLE != 'true')
7370
return;
7471

75-
const total = await Environment.find({ domain }).countDocuments();
76-
const { owner } = await Domain.findById(domain).lean();
72+
const total = await getTotalEnvByDomainId(domain);
73+
const { owner } = await getDomainById(domain);
7774
switcherFlagResult(await switcher.isItOn('ELEMENT_CREATION', [
78-
Switcher.StrategiesType.VALUE, `environment#${owner}`,
79-
Switcher.StrategiesType.NUMERIC, total]
80-
), 'Environment limit has been reached.');
75+
checkValue(`environment#${owner}`),
76+
checkNumeric(total)]), 'Environment limit has been reached.');
8177
}
8278

8379
export async function checkTeam(domain) {
8480
if (process.env.SWITCHER_API_ENABLE != 'true')
8581
return;
8682

87-
const total = await Team.find({ domain }).countDocuments();
88-
const { owner } = await Domain.findById(domain).lean();
83+
const total = await getTotalTeamsByDomainId(domain);
84+
const { owner } = await getDomainById(domain);
8985
switcherFlagResult(await switcher.isItOn('ELEMENT_CREATION', [
90-
Switcher.StrategiesType.VALUE, `team#${owner}`,
91-
Switcher.StrategiesType.NUMERIC, total]
92-
), 'Team limit has been reached.');
86+
checkValue(`team#${owner}`),
87+
checkNumeric(total)]), 'Team limit has been reached.');
9388
}
9489

9590
export async function checkMetrics(config) {
9691
if (process.env.SWITCHER_API_ENABLE != 'true')
9792
return true;
9893

99-
const { owner } = await Domain.findById(config.domain).lean();
94+
const { owner } = await getDomainById(config.domain);
10095
if (!await switcher.isItOn('ELEMENT_CREATION', [
101-
Switcher.StrategiesType.VALUE, `metrics#${owner}`])) {
96+
checkValue(`metrics#${owner}`)])) {
10297

10398
if (!config.disable_metrics) {
10499
config.disable_metrics = new Map();
@@ -115,32 +110,31 @@ export async function checkHistory(domain) {
115110
if (process.env.SWITCHER_API_ENABLE != 'true')
116111
return true;
117112

118-
const { owner } = await Domain.findById(domain).lean();
113+
const { owner } = await getDomainById(domain);
119114
return switcher.isItOn('ELEMENT_CREATION', [
120-
Switcher.StrategiesType.VALUE, `history#${owner}`]);
115+
checkValue(`history#${owner}`)]);
121116
}
122117

123118
export async function checkAdmin(login) {
124119
if (process.env.SWITCHER_API_ENABLE != 'true')
125120
return;
126121

127122
switcherFlagResult(await switcher.isItOn('ACCOUNT_CREATION', [
128-
Switcher.StrategiesType.VALUE, login]
129-
), 'Account not released to use the API.');
123+
checkValue(login)]), 'Account not released to use the API.');
130124
}
131125

132126
export function notifyAcCreation(adminid) {
133127
if (process.env.SWITCHER_API_ENABLE != 'true')
134128
return;
135129

136130
switcher.isItOn('ACCOUNT_IN_NOTIFY', [
137-
Switcher.StrategiesType.VALUE, adminid]);
131+
checkValue(adminid)]);
138132
}
139133

140134
export function notifyAcDeletion(adminid) {
141135
if (process.env.SWITCHER_API_ENABLE != 'true')
142136
return;
143137

144138
switcher.isItOn('ACCOUNT_OUT_NOTIFY', [
145-
Switcher.StrategiesType.VALUE, adminid]);
139+
checkValue(adminid)]);
146140
}

tests/unit-test/switcher-api-facade.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
groupConfigDocument,
2424
config1Document
2525
} from '../fixtures/db_api';
26-
import Switcher from 'switcher-client';
26+
import { Switcher } from 'switcher-client';
2727

2828
afterAll(async () => {
2929
await new Promise(resolve => setTimeout(resolve, 1000));

0 commit comments

Comments
 (0)