prow-authority 3.6.3
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/.claude/settings.local.json +11 -0
- package/.dockerignore +11 -0
- package/.github/workflows/_deploy.yml +191 -0
- package/.github/workflows/deploy-dev.yml +30 -0
- package/.github/workflows/deploy-prod.yml +34 -0
- package/CLAUDE.md +114 -0
- package/Dockerfile +61 -0
- package/Dockerfile.dev +24 -0
- package/README.md +1 -0
- package/package.json +61 -0
- package/src/App.ts +40 -0
- package/src/helpers/api-error.ts +21 -0
- package/src/helpers/authority.ts +216 -0
- package/src/helpers/config.ts +4 -0
- package/src/helpers/holded.ts +105 -0
- package/src/helpers/mysql.ts +15 -0
- package/src/helpers/notifications.ts +55 -0
- package/src/helpers/random.ts +18 -0
- package/src/helpers/s3.ts +43 -0
- package/src/helpers/stripe.ts +8 -0
- package/src/index.ts +47 -0
- package/src/v1/common-types.ts +12 -0
- package/src/v1/controllers/admin/accounting-seat-controller.ts +148 -0
- package/src/v1/controllers/admin/billing-cycle-controller.ts +171 -0
- package/src/v1/controllers/admin/invoice-controller.ts +222 -0
- package/src/v1/controllers/admin/license-controller.ts +190 -0
- package/src/v1/controllers/admin/license-limit-controller.ts +160 -0
- package/src/v1/controllers/admin/notification-controller.ts +115 -0
- package/src/v1/controllers/admin/organization-controller.ts +210 -0
- package/src/v1/controllers/admin/organization-license-controller.ts +224 -0
- package/src/v1/controllers/admin/organization-license-limit-controller.ts +196 -0
- package/src/v1/controllers/admin/organization-usage-controller.ts +167 -0
- package/src/v1/controllers/admin/payment-method-controller.ts +173 -0
- package/src/v1/controllers/admin/policy-controller.ts +138 -0
- package/src/v1/controllers/admin/policy-version-controller.ts +143 -0
- package/src/v1/controllers/admin/schedule-controller.ts +181 -0
- package/src/v1/controllers/admin/service-controller.ts +206 -0
- package/src/v1/controllers/admin/service-notification-controller.ts +166 -0
- package/src/v1/controllers/admin/user-controller.ts +282 -0
- package/src/v1/controllers/admin/user-organization-controller.ts +172 -0
- package/src/v1/controllers/admin/user-policy-controller.ts +164 -0
- package/src/v1/controllers/auth/@deprecated oauth-controller.ts +191 -0
- package/src/v1/controllers/auth/identity-token-controller.ts +286 -0
- package/src/v1/controllers/auth/organization-token-controller.ts +277 -0
- package/src/v1/controllers/auth/temp-code-controller.ts +60 -0
- package/src/v1/controllers/billing/billing-controller.ts +805 -0
- package/src/v1/controllers/organizations/public-organization-controller.ts +1796 -0
- package/src/v1/controllers/policies/public-policy-controller.ts +68 -0
- package/src/v1/controllers/services/public-service-controller.ts +177 -0
- package/src/v1/controllers/services/service-controller.ts +474 -0
- package/src/v1/controllers/users/public-user-controller.ts +471 -0
- package/src/v1/daos/@deprecated auth-dao.ts +173 -0
- package/src/v1/daos/accounting-seat-dao.ts +111 -0
- package/src/v1/daos/billing-cycle-dao.ts +107 -0
- package/src/v1/daos/invoice-dao.ts +131 -0
- package/src/v1/daos/license-dao.ts +152 -0
- package/src/v1/daos/license-limit-dao.ts +120 -0
- package/src/v1/daos/organization-dao.ts +109 -0
- package/src/v1/daos/organization-license-dao.ts +117 -0
- package/src/v1/daos/organization-license-limit-dao.ts +157 -0
- package/src/v1/daos/organization-usage-dao.ts +115 -0
- package/src/v1/daos/payment-method-dao.ts +110 -0
- package/src/v1/daos/policy-dao.ts +105 -0
- package/src/v1/daos/policy-version-dao.ts +112 -0
- package/src/v1/daos/redis-dao.ts +38 -0
- package/src/v1/daos/schema.sql +462 -0
- package/src/v1/daos/service-dao.ts +118 -0
- package/src/v1/daos/service-notification-dao.ts +120 -0
- package/src/v1/daos/user-dao.ts +127 -0
- package/src/v1/daos/user-organization-dao.ts +123 -0
- package/src/v1/daos/user-policy-dao.ts +109 -0
- package/src/v1/middlewares/auth/identity-token-middleware.ts +51 -0
- package/src/v1/middlewares/auth/organization-token-middleware.ts +73 -0
- package/src/v1/middlewares/auth/service-token-middleware.ts +167 -0
- package/src/v1/middlewares/authority-middleware.ts +97 -0
- package/src/v1/middlewares/organizations/organization-middleware.ts +94 -0
- package/src/v1/middlewares/static/static-middleware.ts +41 -0
- package/src/v1/middlewares/users/user-middleware.ts +41 -0
- package/src/v1/routes/admin/accounting-seat-router.ts +89 -0
- package/src/v1/routes/admin/admin-router.ts +61 -0
- package/src/v1/routes/admin/billing-cycle-router.ts +89 -0
- package/src/v1/routes/admin/invoice-router.ts +89 -0
- package/src/v1/routes/admin/license-limit-router.ts +89 -0
- package/src/v1/routes/admin/license-router.ts +89 -0
- package/src/v1/routes/admin/notification-router.ts +61 -0
- package/src/v1/routes/admin/organization-license-limit-router.ts +89 -0
- package/src/v1/routes/admin/organization-license-router.ts +89 -0
- package/src/v1/routes/admin/organization-router.ts +89 -0
- package/src/v1/routes/admin/payment-method-router.ts +89 -0
- package/src/v1/routes/admin/policy-router.ts +89 -0
- package/src/v1/routes/admin/policy-version-router.ts +89 -0
- package/src/v1/routes/admin/schedule-router.ts +75 -0
- package/src/v1/routes/admin/service-notification-router.ts +98 -0
- package/src/v1/routes/admin/service-router.ts +89 -0
- package/src/v1/routes/admin/user-organization-router.ts +89 -0
- package/src/v1/routes/admin/user-policy-router.ts +89 -0
- package/src/v1/routes/admin/user-router.ts +89 -0
- package/src/v1/routes/auth/@deprecated auth-router.ts +199 -0
- package/src/v1/routes/auth/identity-token-router.ts +147 -0
- package/src/v1/routes/auth/organization-token-router.ts +70 -0
- package/src/v1/routes/billing/billing-router.ts +227 -0
- package/src/v1/routes/organizations/invoices-router.ts +48 -0
- package/src/v1/routes/organizations/payments-router.ts +104 -0
- package/src/v1/routes/organizations/public-organization-router.ts +319 -0
- package/src/v1/routes/organizations/users-router.ts +139 -0
- package/src/v1/routes/policies/public-policy-router.ts +50 -0
- package/src/v1/routes/services/public-service-router.ts +89 -0
- package/src/v1/routes/services/service-router.ts +197 -0
- package/src/v1/routes/users/public-user-router.ts +230 -0
- package/src/v1/routes/v1-router.ts +50 -0
- package/src/v1/schemas/admin/accounting-seat-schemas.ts +22 -0
- package/src/v1/schemas/admin/billing-cycle-schemas.ts +20 -0
- package/src/v1/schemas/admin/invoice-schemas.ts +41 -0
- package/src/v1/schemas/admin/license-limit-schemas.ts +25 -0
- package/src/v1/schemas/admin/license-schemas.ts +30 -0
- package/src/v1/schemas/admin/organization-license-limit-schemas.ts +29 -0
- package/src/v1/schemas/admin/organization-license-schemas.ts +43 -0
- package/src/v1/schemas/admin/organization-schemas.ts +67 -0
- package/src/v1/schemas/admin/organization-usage-schemas.ts +15 -0
- package/src/v1/schemas/admin/payment-method-schemas.ts +40 -0
- package/src/v1/schemas/admin/policy-schemas.ts +31 -0
- package/src/v1/schemas/admin/service-notification-schemas.ts +23 -0
- package/src/v1/schemas/admin/service-schemas.ts +56 -0
- package/src/v1/schemas/admin/user-organization-schemas.ts +24 -0
- package/src/v1/schemas/admin/user-policy-schemas.ts +17 -0
- package/src/v1/schemas/admin/user-schemas.ts +52 -0
- package/src/v1/schemas/auth/auth-schemas.ts +55 -0
- package/src/v1/schemas/billing/billing-schemas.ts +32 -0
- package/src/v1/schemas/organizations/public-organization-schemas.ts +77 -0
- package/src/v1/schemas/payments/payment-method-schemas.ts +0 -0
- package/src/v1/schemas/services/public-service-schemas.ts +5 -0
- package/src/v1/schemas/services/service-schemas.ts +27 -0
- package/src/v1/schemas/users/public-user-schemas.ts +73 -0
- package/src/v1/types/admin/accounting-seat-types.ts +16 -0
- package/src/v1/types/admin/billing-cycle-types.ts +14 -0
- package/src/v1/types/admin/invoice-types.ts +39 -0
- package/src/v1/types/admin/license-limit-types.ts +16 -0
- package/src/v1/types/admin/license-types.ts +29 -0
- package/src/v1/types/admin/organization-license-limit-types.ts +13 -0
- package/src/v1/types/admin/organization-license-types.ts +21 -0
- package/src/v1/types/admin/organization-types.ts +60 -0
- package/src/v1/types/admin/organization-usage-types.ts +17 -0
- package/src/v1/types/admin/payment-method-types.ts +30 -0
- package/src/v1/types/admin/policy-types.ts +9 -0
- package/src/v1/types/admin/policy-version-types.ts +12 -0
- package/src/v1/types/admin/service-notification-types.ts +20 -0
- package/src/v1/types/admin/service-types.ts +36 -0
- package/src/v1/types/admin/user-organization-types.ts +31 -0
- package/src/v1/types/admin/user-types.ts +44 -0
- package/src/v1/types/auth/@deprecated auth-types.ts +26 -0
- package/src/v1/types/auth/common-types.ts +7 -0
- package/src/v1/types/auth/confirmation-types.ts +5 -0
- package/src/v1/types/auth/identity-token-types.ts +8 -0
- package/src/v1/types/auth/organization-token-types.ts +23 -0
- package/src/v1/types/auth/otp-types.ts +12 -0
- package/src/v1/types/billing/billing-types.ts +37 -0
- package/src/v1/types/billing/ue-types.ts +29 -0
- package/src/v1/types/organizations/public-organization-types.ts +76 -0
- package/src/v1/types/policies/public-policy-types.ts +7 -0
- package/src/v1/types/services/public-service-types.ts +20 -0
- package/src/v1/types/services/service-types.ts +43 -0
- package/src/v1/types/users/public-user-types.ts +15 -0
- package/src/v1/types/users/user-policy-types.ts +11 -0
- package/static/error.html +55 -0
- package/static/grant.html +117 -0
- package/static/login.html +54 -0
- package/static/oauth-client-logo.webp +0 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { Where } from '@beseif-solutions/utility-functions/dist/utils/sql-utils';
|
|
2
|
+
import mySql from '../../helpers/mysql';
|
|
3
|
+
import { DBRecord } from '../types/admin/organization-types';
|
|
4
|
+
import { Modifiers } from '../common-types';
|
|
5
|
+
|
|
6
|
+
class OrganizationDao {
|
|
7
|
+
public readonly get = async (params: Pick<DBRecord, `id`>): Promise<DBRecord[]> => {
|
|
8
|
+
try {
|
|
9
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
10
|
+
select: `*`,
|
|
11
|
+
from: `organization`,
|
|
12
|
+
where: params,
|
|
13
|
+
});
|
|
14
|
+
const response = await mySql.promiseQuery(q, p);
|
|
15
|
+
return response;
|
|
16
|
+
} catch (e) {
|
|
17
|
+
throw e;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
public readonly list = async (params: Where<DBRecord>, modifiers: Modifiers = {}): Promise<DBRecord[]> => {
|
|
22
|
+
try {
|
|
23
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
24
|
+
select: `*`,
|
|
25
|
+
from: `organization`,
|
|
26
|
+
where: params,
|
|
27
|
+
...modifiers.order && { order: { by: modifiers.order.by, direction: modifiers.order.direction } },
|
|
28
|
+
...modifiers.limit && {
|
|
29
|
+
limit: {
|
|
30
|
+
count: parseInt(modifiers.limit.count, 10),
|
|
31
|
+
...modifiers.limit.from && { from: parseInt(modifiers.limit.from, 10) },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
const response = await mySql.promiseQuery(q, p);
|
|
36
|
+
return response;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
throw e;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
public readonly add = async (data: Omit<DBRecord, `id` | `created_date` | `modified_date`>): Promise<{ insertId: number }> => {
|
|
43
|
+
try {
|
|
44
|
+
const q = `insert into organization (uuid, properties, billing, preferences, metadata, internal, created_date, modified_date, status) values (?,?,?,?,?,?,?,?,?)`;
|
|
45
|
+
const p = [
|
|
46
|
+
data.uuid,
|
|
47
|
+
JSON.stringify(data.properties || {}),
|
|
48
|
+
JSON.stringify(data.billing || {}),
|
|
49
|
+
JSON.stringify(data.preferences || {}),
|
|
50
|
+
JSON.stringify(data.metadata || {}),
|
|
51
|
+
JSON.stringify(data.internal || {}),
|
|
52
|
+
new Date(),
|
|
53
|
+
new Date(),
|
|
54
|
+
data.status,
|
|
55
|
+
];
|
|
56
|
+
const response = await mySql.promiseQuery(q, p);
|
|
57
|
+
return response;
|
|
58
|
+
} catch (e) {
|
|
59
|
+
throw e;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
public readonly update = async (params: Pick<DBRecord, `id`>, data: Omit<DBRecord, `id` | `created_date` | `modified_date`>): Promise<{ affectedRows: number }> => {
|
|
64
|
+
try {
|
|
65
|
+
const q = `update organization set
|
|
66
|
+
uuid = ?,
|
|
67
|
+
properties = ?,
|
|
68
|
+
preferences = ?,
|
|
69
|
+
billing = ?,
|
|
70
|
+
metadata = ?,
|
|
71
|
+
internal = ?,
|
|
72
|
+
modified_date = ?,
|
|
73
|
+
status = ?
|
|
74
|
+
where id = ?`;
|
|
75
|
+
const p = [
|
|
76
|
+
data.uuid,
|
|
77
|
+
JSON.stringify(data.properties || {}),
|
|
78
|
+
JSON.stringify(data.preferences || {}),
|
|
79
|
+
JSON.stringify(data.billing || {}),
|
|
80
|
+
JSON.stringify(data.metadata || {}),
|
|
81
|
+
JSON.stringify(data.internal || {}),
|
|
82
|
+
new Date(),
|
|
83
|
+
data.status,
|
|
84
|
+
params.id,
|
|
85
|
+
];
|
|
86
|
+
const response = await mySql.promiseQuery(q, p);
|
|
87
|
+
return response;
|
|
88
|
+
} catch (e) {
|
|
89
|
+
throw e;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
public readonly delete = async (params: Pick<DBRecord, `id`>): Promise<{ affectedRows: number }> => {
|
|
94
|
+
try {
|
|
95
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
96
|
+
delete: null,
|
|
97
|
+
from: `organization`,
|
|
98
|
+
where: params,
|
|
99
|
+
});
|
|
100
|
+
const response = await mySql.promiseQuery(q, p);
|
|
101
|
+
return response;
|
|
102
|
+
} catch (e) {
|
|
103
|
+
throw e;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const organizationDao = new OrganizationDao();
|
|
109
|
+
export default organizationDao;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Where } from '@beseif-solutions/utility-functions/dist/utils/sql-utils';
|
|
2
|
+
import mySql from '../../helpers/mysql';
|
|
3
|
+
import { DBPrices, DBRecord } from '../types/admin/organization-license-types';
|
|
4
|
+
import { Modifiers } from '../common-types';
|
|
5
|
+
|
|
6
|
+
class OrganizationLicenseDao {
|
|
7
|
+
public readonly get = async (params: Pick<DBRecord, `id`>): Promise<DBRecord[]> => {
|
|
8
|
+
try {
|
|
9
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
10
|
+
select: `*`,
|
|
11
|
+
// view for enabled computed value
|
|
12
|
+
from: `organization_license_enabled`,
|
|
13
|
+
where: params,
|
|
14
|
+
});
|
|
15
|
+
const response = await mySql.promiseQuery(q, p);
|
|
16
|
+
return response;
|
|
17
|
+
} catch (e) { throw e; }
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
public readonly list = async (params: Where<DBRecord>, modifiers: Modifiers = {}): Promise<DBRecord[]> => {
|
|
21
|
+
try {
|
|
22
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
23
|
+
select: `*`,
|
|
24
|
+
// view for enabled computed value
|
|
25
|
+
from: `organization_license_enabled`,
|
|
26
|
+
where: params,
|
|
27
|
+
...modifiers.order && { order: { by: modifiers.order.by, direction: modifiers.order.direction } },
|
|
28
|
+
...modifiers.limit && {
|
|
29
|
+
limit: {
|
|
30
|
+
count: parseInt(modifiers.limit.count, 10),
|
|
31
|
+
...modifiers.limit.from && { from: parseInt(modifiers.limit.from, 10) },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
const response = await mySql.promiseQuery(q, p);
|
|
36
|
+
return response;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
throw e;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
public readonly add = async (data: Omit<DBRecord, `id` | keyof DBPrices | `enabled`>): Promise<{ insertId: number }> => {
|
|
43
|
+
try {
|
|
44
|
+
const q = `insert into organization_license (uuid, organization, service, type, associated, original, billing, properties, data, start_date, end_date, metadata, internal) values (?,?,?,?,?,?,?,?,?,?,?,?,?)`;
|
|
45
|
+
const p = [
|
|
46
|
+
data.uuid,
|
|
47
|
+
data.organization,
|
|
48
|
+
data.service,
|
|
49
|
+
data.type,
|
|
50
|
+
data.associated,
|
|
51
|
+
data.original,
|
|
52
|
+
data.billing,
|
|
53
|
+
JSON.stringify(data.properties || {}),
|
|
54
|
+
JSON.stringify(data.data || {}),
|
|
55
|
+
data.start_date ? new Date(data.start_date) : null,
|
|
56
|
+
data.end_date ? new Date(data.end_date) : null,
|
|
57
|
+
JSON.stringify(data.metadata || {}),
|
|
58
|
+
JSON.stringify(data.internal || {}),
|
|
59
|
+
];
|
|
60
|
+
const response = await mySql.promiseQuery(q, p);
|
|
61
|
+
return response;
|
|
62
|
+
} catch (e) { throw e; }
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
public readonly update = async (params: Pick<DBRecord, `id`>, data: Omit<DBRecord, `id` | keyof DBPrices | `enabled`>): Promise<{ affectedRows: number }> => {
|
|
66
|
+
try {
|
|
67
|
+
const q = `update organization_license set
|
|
68
|
+
uuid = ?,
|
|
69
|
+
organization = ?,
|
|
70
|
+
service = ?,
|
|
71
|
+
type = ?,
|
|
72
|
+
associated = ?,
|
|
73
|
+
original = ?,
|
|
74
|
+
billing = ?,
|
|
75
|
+
properties = ?,
|
|
76
|
+
data = ?,
|
|
77
|
+
start_date = ?,
|
|
78
|
+
end_date = ?,
|
|
79
|
+
metadata = ?,
|
|
80
|
+
internal = ?
|
|
81
|
+
where id = ?`;
|
|
82
|
+
const p = [
|
|
83
|
+
data.uuid,
|
|
84
|
+
data.organization,
|
|
85
|
+
data.service,
|
|
86
|
+
data.type,
|
|
87
|
+
data.associated,
|
|
88
|
+
data.original,
|
|
89
|
+
data.billing,
|
|
90
|
+
JSON.stringify(data.properties || {}),
|
|
91
|
+
JSON.stringify(data.data || {}),
|
|
92
|
+
data.start_date ? new Date(data.start_date) : null,
|
|
93
|
+
data.end_date ? new Date(data.end_date) : null,
|
|
94
|
+
JSON.stringify(data.metadata || {}),
|
|
95
|
+
JSON.stringify(data.internal || {}),
|
|
96
|
+
params.id,
|
|
97
|
+
];
|
|
98
|
+
const response = await mySql.promiseQuery(q, p);
|
|
99
|
+
return response;
|
|
100
|
+
} catch (e) { throw e; }
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
public readonly delete = async (params: Pick<DBRecord, `id`>): Promise<{ affectedRows: number }> => {
|
|
104
|
+
try {
|
|
105
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
106
|
+
delete: null,
|
|
107
|
+
from: `organization_license`,
|
|
108
|
+
where: params,
|
|
109
|
+
});
|
|
110
|
+
const response = await mySql.promiseQuery(q, p);
|
|
111
|
+
return response;
|
|
112
|
+
} catch (e) { throw e; }
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const organizationLicenseDao = new OrganizationLicenseDao();
|
|
117
|
+
export default organizationLicenseDao;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { MySQL, Where } from '@beseif-solutions/utility-functions/dist/utils/sql-utils';
|
|
2
|
+
import mySql from '../../helpers/mysql';
|
|
3
|
+
import { DBRecord } from '../types/admin/organization-license-limit-types';
|
|
4
|
+
import _ from 'lodash';
|
|
5
|
+
import { Modifiers } from '../common-types';
|
|
6
|
+
|
|
7
|
+
class OrganizationLicenseLimitDao {
|
|
8
|
+
public readonly get = async (
|
|
9
|
+
params: Pick<DBRecord, `id`>
|
|
10
|
+
): Promise<DBRecord[]> => {
|
|
11
|
+
try {
|
|
12
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
13
|
+
select: `*`,
|
|
14
|
+
from: `organization_license_limit`,
|
|
15
|
+
where: params,
|
|
16
|
+
});
|
|
17
|
+
const response = await mySql.promiseQuery(q, p);
|
|
18
|
+
return response;
|
|
19
|
+
} catch (e) {
|
|
20
|
+
throw e;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
public readonly list = async (params: Where<DBRecord>, modifiers: Modifiers = {}): Promise<DBRecord[]> => {
|
|
25
|
+
try {
|
|
26
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
27
|
+
select: `*`,
|
|
28
|
+
from: `organization_license_limit`,
|
|
29
|
+
where: params,
|
|
30
|
+
...modifiers.order && { order: { by: modifiers.order.by, direction: modifiers.order.direction } },
|
|
31
|
+
...modifiers.limit && {
|
|
32
|
+
limit: {
|
|
33
|
+
count: parseInt(modifiers.limit.count, 10),
|
|
34
|
+
...modifiers.limit.from && { from: parseInt(modifiers.limit.from, 10) },
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
const response = await mySql.promiseQuery(q, p);
|
|
39
|
+
return response;
|
|
40
|
+
} catch (e) {
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
public readonly count = async (params: Where<DBRecord>, group: string[] = []): Promise<({ count: number } & Record<string, any>)[]> => {
|
|
46
|
+
try {
|
|
47
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
48
|
+
select: _.compact([
|
|
49
|
+
...group,
|
|
50
|
+
{ field: `count(id)`, alias: `count` },
|
|
51
|
+
]),
|
|
52
|
+
from: `organization_license_limit`,
|
|
53
|
+
where: params,
|
|
54
|
+
...group.length > 0 && { group: group },
|
|
55
|
+
});
|
|
56
|
+
const response = await mySql.promiseQuery(q, p);
|
|
57
|
+
return response;
|
|
58
|
+
} catch (e) { throw e; }
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
public readonly sum = async (sum: string, params: Where<DBRecord>, group: string[] = []): Promise<({ sum: string } & Record<string, any>)[]> => {
|
|
62
|
+
try {
|
|
63
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
64
|
+
select: _.compact([
|
|
65
|
+
...group,
|
|
66
|
+
{ field: `sum(${MySQL[`getKey`](sum)})`, alias: `sum` },
|
|
67
|
+
]),
|
|
68
|
+
from: `organization_license_limit`,
|
|
69
|
+
where: params,
|
|
70
|
+
...group.length > 0 && { group: group },
|
|
71
|
+
});
|
|
72
|
+
const response = await mySql.promiseQuery(q, p);
|
|
73
|
+
return response;
|
|
74
|
+
} catch (e) { throw e; }
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
public readonly add = async (data: Omit<DBRecord, `id`>): Promise<{ insertId: number }> => {
|
|
78
|
+
try {
|
|
79
|
+
const q = `insert into organization_license_limit (organization, license, name, \`limit\`, period, monthly_price_abs, annual_price_abs, overconsume, overconsume_monthly_price_per_unit, overconsume_annual_price_per_unit, metadata) values (?,?,?,?,?,?,?,?,?,?,?)`;
|
|
80
|
+
const p = [
|
|
81
|
+
data.organization,
|
|
82
|
+
data.license,
|
|
83
|
+
data.name,
|
|
84
|
+
data.limit,
|
|
85
|
+
data.period,
|
|
86
|
+
data.monthly_price_abs,
|
|
87
|
+
data.annual_price_abs,
|
|
88
|
+
data.overconsume,
|
|
89
|
+
data.overconsume_monthly_price_per_unit,
|
|
90
|
+
data.overconsume_annual_price_per_unit,
|
|
91
|
+
JSON.stringify(data.metadata || {}),
|
|
92
|
+
];
|
|
93
|
+
const response = await mySql.promiseQuery(q, p);
|
|
94
|
+
return response;
|
|
95
|
+
} catch (e) {
|
|
96
|
+
throw e;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
public readonly update = async (
|
|
101
|
+
params: Pick<DBRecord, `id`>,
|
|
102
|
+
data: Omit<DBRecord, `id`>
|
|
103
|
+
): Promise<{ affectedRows: number }> => {
|
|
104
|
+
try {
|
|
105
|
+
const q = `update organization_license_limit set
|
|
106
|
+
organization = ?,
|
|
107
|
+
license = ?,
|
|
108
|
+
name = ?,
|
|
109
|
+
\`limit\` = ?,
|
|
110
|
+
period = ?,
|
|
111
|
+
monthly_price_abs = ?,
|
|
112
|
+
annual_price_abs = ?,
|
|
113
|
+
overconsume = ?,
|
|
114
|
+
overconsume_monthly_price_per_unit = ?,
|
|
115
|
+
overconsume_annual_price_per_unit = ?,
|
|
116
|
+
metadata = ?
|
|
117
|
+
where id = ?`;
|
|
118
|
+
const p = [
|
|
119
|
+
data.organization,
|
|
120
|
+
data.license,
|
|
121
|
+
data.name,
|
|
122
|
+
data.limit,
|
|
123
|
+
data.period,
|
|
124
|
+
data.monthly_price_abs,
|
|
125
|
+
data.annual_price_abs,
|
|
126
|
+
data.overconsume,
|
|
127
|
+
data.overconsume_monthly_price_per_unit,
|
|
128
|
+
data.overconsume_annual_price_per_unit,
|
|
129
|
+
JSON.stringify(data.metadata || {}),
|
|
130
|
+
params.id,
|
|
131
|
+
];
|
|
132
|
+
const response = await mySql.promiseQuery(q, p);
|
|
133
|
+
return response;
|
|
134
|
+
} catch (e) {
|
|
135
|
+
throw e;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
public readonly delete = async (
|
|
140
|
+
params: Pick<DBRecord, `id`>
|
|
141
|
+
): Promise<{ affectedRows: number }> => {
|
|
142
|
+
try {
|
|
143
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
144
|
+
delete: null,
|
|
145
|
+
from: `organization_license_limit`,
|
|
146
|
+
where: params,
|
|
147
|
+
});
|
|
148
|
+
const response = await mySql.promiseQuery(q, p);
|
|
149
|
+
return response;
|
|
150
|
+
} catch (e) {
|
|
151
|
+
throw e;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const organizationLicenseLimitDao = new OrganizationLicenseLimitDao();
|
|
157
|
+
export default organizationLicenseLimitDao;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Where } from '@beseif-solutions/utility-functions/dist/utils/sql-utils';
|
|
2
|
+
import mySql from '../../helpers/mysql';
|
|
3
|
+
import { Modifiers } from '../common-types';
|
|
4
|
+
import { DBRecord } from '../types/admin/organization-usage-types';
|
|
5
|
+
|
|
6
|
+
class OrganizationUsageDao {
|
|
7
|
+
|
|
8
|
+
public readonly get = async (params: Pick<DBRecord, `id`>): Promise<DBRecord[]> => {
|
|
9
|
+
try {
|
|
10
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
11
|
+
select: `*`,
|
|
12
|
+
from: `organization_usage`,
|
|
13
|
+
where: params,
|
|
14
|
+
});
|
|
15
|
+
const response = await mySql.promiseQuery(q, p);
|
|
16
|
+
return response;
|
|
17
|
+
} catch (e) {
|
|
18
|
+
throw e;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
public readonly list = async (params: Where<DBRecord> | Where<DBRecord>[], modifiers: Modifiers = {}): Promise<DBRecord[]> => {
|
|
23
|
+
try {
|
|
24
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
25
|
+
select: `*`,
|
|
26
|
+
from: `organization_usage`,
|
|
27
|
+
where: params,
|
|
28
|
+
...modifiers.order && { order: { by: modifiers.order.by, direction: modifiers.order.direction } },
|
|
29
|
+
...modifiers.limit && {
|
|
30
|
+
limit: {
|
|
31
|
+
count: parseInt(modifiers.limit.count, 10),
|
|
32
|
+
...modifiers.limit.from && { from: parseInt(modifiers.limit.from, 10) },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// ÑAPA: force index
|
|
38
|
+
const forcedIndexQuery = q.replace(`from organization_usage`, `from organization_usage force index (idx_lookup_optimized)`);
|
|
39
|
+
|
|
40
|
+
const response = await mySql.promiseQuery(forcedIndexQuery, p);
|
|
41
|
+
return response;
|
|
42
|
+
} catch (e) {
|
|
43
|
+
throw e;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
public readonly add = async (data: Omit<DBRecord, `id` | `date`>): Promise<{ insertId: number }> => {
|
|
48
|
+
try {
|
|
49
|
+
const q = `insert into organization_usage (organization, service, name, count) values (?,?,?,?)`;
|
|
50
|
+
const p = [
|
|
51
|
+
data.organization,
|
|
52
|
+
data.service,
|
|
53
|
+
data.name,
|
|
54
|
+
data.count,
|
|
55
|
+
];
|
|
56
|
+
const response = await mySql.promiseQuery(q, p);
|
|
57
|
+
return response;
|
|
58
|
+
} catch (e) {
|
|
59
|
+
throw e;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
public readonly update = async (params: Pick<DBRecord, `id`>, data: Omit<DBRecord, `id` | `date`>): Promise<{ affectedRows: number }> => {
|
|
64
|
+
try {
|
|
65
|
+
const q = `update organization_usage set
|
|
66
|
+
organization = ?,
|
|
67
|
+
service = ?,
|
|
68
|
+
name = ?,
|
|
69
|
+
count = ?
|
|
70
|
+
where id = ?`;
|
|
71
|
+
const p = [
|
|
72
|
+
data.organization,
|
|
73
|
+
data.service,
|
|
74
|
+
data.name,
|
|
75
|
+
data.count,
|
|
76
|
+
params.id,
|
|
77
|
+
];
|
|
78
|
+
const response = await mySql.promiseQuery(q, p);
|
|
79
|
+
return response;
|
|
80
|
+
} catch (e) {
|
|
81
|
+
throw e;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
public readonly delete = async (params: Pick<DBRecord, `id`>): Promise<{ affectedRows: number }> => {
|
|
86
|
+
try {
|
|
87
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
88
|
+
delete: null,
|
|
89
|
+
from: `organization_usage`,
|
|
90
|
+
where: params,
|
|
91
|
+
});
|
|
92
|
+
const response = await mySql.promiseQuery(q, p);
|
|
93
|
+
return response;
|
|
94
|
+
} catch (e) {
|
|
95
|
+
throw e;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
public readonly sum = async (params: Where<DBRecord>): Promise<{ total: number }[]> => {
|
|
100
|
+
try {
|
|
101
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
102
|
+
select: [{ field: `sum(count)`, alias: `total` }],
|
|
103
|
+
from: `organization_usage`,
|
|
104
|
+
where: params,
|
|
105
|
+
});
|
|
106
|
+
const response = await mySql.promiseQuery(q, p);
|
|
107
|
+
return response;
|
|
108
|
+
} catch (e) {
|
|
109
|
+
throw e;
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const organizationUsageDao = new OrganizationUsageDao();
|
|
115
|
+
export default organizationUsageDao;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import mySql from "../../helpers/mysql";
|
|
2
|
+
import { Modifiers } from "../common-types";
|
|
3
|
+
import { DBRecord } from "../types/admin/payment-method-types";
|
|
4
|
+
import { Where } from "@beseif-solutions/utility-functions/dist/utils/sql-utils";
|
|
5
|
+
|
|
6
|
+
class PaymentMethodDao {
|
|
7
|
+
|
|
8
|
+
public readonly get = async (params: Pick<DBRecord, `id`>): Promise<DBRecord[]> => {
|
|
9
|
+
try {
|
|
10
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
11
|
+
select: `*`,
|
|
12
|
+
from: `payment_method`,
|
|
13
|
+
where: params,
|
|
14
|
+
});
|
|
15
|
+
const response = await mySql.promiseQuery(q, p);
|
|
16
|
+
return response;
|
|
17
|
+
} catch (e) {
|
|
18
|
+
throw e;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
public readonly list = async (params: Where<DBRecord>, modifiers: Modifiers = {}): Promise<DBRecord[]> => {
|
|
23
|
+
try {
|
|
24
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
25
|
+
select: `*`,
|
|
26
|
+
from: `payment_method`,
|
|
27
|
+
where: params,
|
|
28
|
+
...modifiers.order && { order: { by: modifiers.order.by, direction: modifiers.order.direction } },
|
|
29
|
+
...modifiers.limit && {
|
|
30
|
+
limit: {
|
|
31
|
+
count: parseInt(modifiers.limit.count, 10),
|
|
32
|
+
...modifiers.limit.from && { from: parseInt(modifiers.limit.from, 10) },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const response = await mySql.promiseQuery(q, p);
|
|
37
|
+
return response;
|
|
38
|
+
} catch (e) {
|
|
39
|
+
throw e;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
public readonly add = async (data: Omit<DBRecord, `id` | `created_date` | `modified_date`>): Promise<{ insertId: number }> => {
|
|
44
|
+
try {
|
|
45
|
+
const q = `insert into payment_method (uuid, organization, type, properties, enabled, created_date, modified_date, metadata, internal) values (?,?,?,?,?,?,?,?,?)`;
|
|
46
|
+
const p = [
|
|
47
|
+
data.uuid,
|
|
48
|
+
data.organization,
|
|
49
|
+
data.type,
|
|
50
|
+
JSON.stringify(data.properties || {}),
|
|
51
|
+
data.enabled,
|
|
52
|
+
new Date(),
|
|
53
|
+
new Date(),
|
|
54
|
+
JSON.stringify(data.metadata || {}),
|
|
55
|
+
JSON.stringify(data.internal || {}),
|
|
56
|
+
];
|
|
57
|
+
const response = await mySql.promiseQuery(q, p);
|
|
58
|
+
return response;
|
|
59
|
+
} catch (e) {
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
public readonly update = async (params: Pick<DBRecord, `id`>, data: Omit<DBRecord, `id` | `created_date` | `modified_date`>): Promise<{ affectedRows: number }> => {
|
|
65
|
+
try {
|
|
66
|
+
const q = `update payment_method set
|
|
67
|
+
uuid = ?,
|
|
68
|
+
organization = ?,
|
|
69
|
+
type = ?,
|
|
70
|
+
properties = ?,
|
|
71
|
+
enabled = ?,
|
|
72
|
+
modified_date = ?,
|
|
73
|
+
metadata = ?,
|
|
74
|
+
internal = ?
|
|
75
|
+
where id = ?`;
|
|
76
|
+
const p = [
|
|
77
|
+
data.uuid,
|
|
78
|
+
data.organization,
|
|
79
|
+
data.type,
|
|
80
|
+
JSON.stringify(data.properties || {}),
|
|
81
|
+
data.enabled,
|
|
82
|
+
new Date(),
|
|
83
|
+
JSON.stringify(data.metadata || {}),
|
|
84
|
+
JSON.stringify(data.internal || {}),
|
|
85
|
+
params.id,
|
|
86
|
+
];
|
|
87
|
+
const response = await mySql.promiseQuery(q, p);
|
|
88
|
+
return response;
|
|
89
|
+
} catch (e) {
|
|
90
|
+
throw e;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
public readonly delete = async (params: Pick<DBRecord, `id`>): Promise<{ affectedRows: number }> => {
|
|
95
|
+
try {
|
|
96
|
+
const { query: q, params: p } = await mySql.queryConstructor<DBRecord>({
|
|
97
|
+
delete: null,
|
|
98
|
+
from: `payment_method`,
|
|
99
|
+
where: params,
|
|
100
|
+
});
|
|
101
|
+
const response = await mySql.promiseQuery(q, p);
|
|
102
|
+
return response;
|
|
103
|
+
} catch (e) {
|
|
104
|
+
throw e;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const paymentMethodDao = new PaymentMethodDao();
|
|
110
|
+
export default paymentMethodDao;
|