storemw-core-api 1.0.167 → 1.0.168
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/dist/features/index.d.ts +1 -1
- package/dist/features/index.js.map +1 -1
- package/dist/features/scheduler_sql/schedulerSqlRegistry.js +11 -9
- package/dist/features/scheduler_sql/schedulerSqlRegistry.js.map +1 -1
- package/dist/features/scheduler_sql/schedulerSqlType.d.ts +4 -10
- package/dist/features/scheduler_sql/schedulerSqlType.js.map +1 -1
- package/dist/services/scheduler/SchedulerSqlService.d.ts +0 -1
- package/dist/services/scheduler/SchedulerSqlService.js +36 -30
- package/dist/services/scheduler/SchedulerSqlService.js.map +1 -1
- package/package.json +1 -1
package/dist/features/index.d.ts
CHANGED
|
@@ -16,6 +16,6 @@ export { registerFileStorageHook } from "./file_storage/fileStorageRegister";
|
|
|
16
16
|
export { FeatureUserMeProps, FeatureUserMeRequestGetProps, FeatureUserMeRequestUpdateProps, FeatureUserMeSuccessUpdateProps, FeatureUserMeSuccessChangePasswordProps, FeatureUserMeSuccessRemoveProps } from './user_me/userMeType';
|
|
17
17
|
export { UserMeHook } from "./user_me/userMeRegistry";
|
|
18
18
|
export { registerUserMeHook } from "./user_me/userMeRegister";
|
|
19
|
-
export { FeatureSchedulerSqlProps, FeatureSchedulerSqlSetup, FeatureSchedulerSqlSetupItem,
|
|
19
|
+
export { FeatureSchedulerSqlProps, FeatureSchedulerSqlSetup, FeatureSchedulerSqlSetupItem, FeatureSchedulerSqlSetupItemQuery, FeatureSchedulerSqlSuccessExecuteProps, FeatureSchedulerSqlFailExecuteProps } from './scheduler_sql/schedulerSqlType';
|
|
20
20
|
export { SchedulerSqlHook } from "./scheduler_sql/schedulerSqlRegistry";
|
|
21
21
|
export { registerSchedulerSqlHook } from "./scheduler_sql/schedulerSqlRegister";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":";;;AACA,uEAAiE;AAAxD,oHAAA,cAAc,OAAA;AACvB,uEAAyE;AAAhE,4HAAA,sBAAsB,OAAA;AAG/B,oEAA8D;AAArD,kHAAA,aAAa,OAAA;AACtB,oEAAsE;AAA7D,0HAAA,qBAAqB,OAAA;AAG9B,gFAA0E;AAAjE,0HAAA,iBAAiB,OAAA;AAC1B,gFAAkF;AAAzE,kIAAA,yBAAyB,OAAA;AAGlC,oEAA8D;AAArD,kHAAA,aAAa,OAAA;AACtB,oEAAsE;AAA7D,0HAAA,qBAAqB,OAAA;AAG9B,0EAAoE;AAA3D,sHAAA,eAAe,OAAA;AACxB,0EAA4E;AAAnE,8HAAA,uBAAuB,OAAA;AAGhC,2DAAqD;AAA5C,4GAAA,UAAU,OAAA;AACnB,2DAA6D;AAApD,oHAAA,kBAAkB,OAAA;AAG3B,6EAAuE;AAA9D,wHAAA,gBAAgB,OAAA;AACzB,6EAA+E;AAAtE,gIAAA,wBAAwB,OAAA","sourcesContent":["export { FeatureCoreConfigProps, FeatureCoreConfigOptions } from './core_config/coreConfigType'\nexport { CoreConfigHook } from \"./core_config/coreConfigRegistry\"\nexport { registerCoreConfigHook } from \"./core_config/coreConfigRegister\"\n\nexport { FeatureAuthTokenProps, FeatureAuthTokenSuccessAuthenticateProps } from './auth_token/authTokenType'\nexport { AuthTokenHook } from \"./auth_token/authTokenRegistry\"\nexport { registerAuthTokenHook } from \"./auth_token/authTokenRegister\"\n\nexport { FeatureResetPasswordProps, FeatureResetPasswordSuccessProps, FeatureResetPasswordRequestProps } from './reset_password/resetPasswordType'\nexport { ResetPasswordHook } from \"./reset_password/resetPasswordRegistry\"\nexport { registerResetPasswordHook } from \"./reset_password/resetPasswordRegister\"\n\nexport { FeatureSmtpEmailProps, FeatureSmtpEmailOptions, FeatureSmtpEmailHbsOptions, FeatureSmtpEmailStartSendProps, FeatureSmtpEmailSuccessSendProps } from './smtp_email/smtpEmailType'\nexport { SmtpEmailHook } from \"./smtp_email/smtpEmailRegistry\"\nexport { registerSmtpEmailHook } from \"./smtp_email/smtpEmailRegister\"\n\nexport { FeatureFileStorageProps, FeatureFileStorageOptions, FeatureFileStorageConfiguration, FeatureFileStorageLocalOptions, FeatureFileStorageGoogleCloudOptions, FeatureFileStorageStartUploadProps, FeatureFileStorageSuccessUploadProps } from './file_storage/fileStorageType'\nexport { FileStorageHook } from \"./file_storage/fileStorageRegistry\"\nexport { registerFileStorageHook } from \"./file_storage/fileStorageRegister\"\n\nexport { FeatureUserMeProps, FeatureUserMeRequestGetProps, FeatureUserMeRequestUpdateProps, FeatureUserMeSuccessUpdateProps, FeatureUserMeSuccessChangePasswordProps, FeatureUserMeSuccessRemoveProps } from './user_me/userMeType'\nexport { UserMeHook } from \"./user_me/userMeRegistry\"\nexport { registerUserMeHook } from \"./user_me/userMeRegister\"\n\nexport { FeatureSchedulerSqlProps, FeatureSchedulerSqlSetup, FeatureSchedulerSqlSetupItem,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/features/index.ts"],"names":[],"mappings":";;;AACA,uEAAiE;AAAxD,oHAAA,cAAc,OAAA;AACvB,uEAAyE;AAAhE,4HAAA,sBAAsB,OAAA;AAG/B,oEAA8D;AAArD,kHAAA,aAAa,OAAA;AACtB,oEAAsE;AAA7D,0HAAA,qBAAqB,OAAA;AAG9B,gFAA0E;AAAjE,0HAAA,iBAAiB,OAAA;AAC1B,gFAAkF;AAAzE,kIAAA,yBAAyB,OAAA;AAGlC,oEAA8D;AAArD,kHAAA,aAAa,OAAA;AACtB,oEAAsE;AAA7D,0HAAA,qBAAqB,OAAA;AAG9B,0EAAoE;AAA3D,sHAAA,eAAe,OAAA;AACxB,0EAA4E;AAAnE,8HAAA,uBAAuB,OAAA;AAGhC,2DAAqD;AAA5C,4GAAA,UAAU,OAAA;AACnB,2DAA6D;AAApD,oHAAA,kBAAkB,OAAA;AAG3B,6EAAuE;AAA9D,wHAAA,gBAAgB,OAAA;AACzB,6EAA+E;AAAtE,gIAAA,wBAAwB,OAAA","sourcesContent":["export { FeatureCoreConfigProps, FeatureCoreConfigOptions } from './core_config/coreConfigType'\nexport { CoreConfigHook } from \"./core_config/coreConfigRegistry\"\nexport { registerCoreConfigHook } from \"./core_config/coreConfigRegister\"\n\nexport { FeatureAuthTokenProps, FeatureAuthTokenSuccessAuthenticateProps } from './auth_token/authTokenType'\nexport { AuthTokenHook } from \"./auth_token/authTokenRegistry\"\nexport { registerAuthTokenHook } from \"./auth_token/authTokenRegister\"\n\nexport { FeatureResetPasswordProps, FeatureResetPasswordSuccessProps, FeatureResetPasswordRequestProps } from './reset_password/resetPasswordType'\nexport { ResetPasswordHook } from \"./reset_password/resetPasswordRegistry\"\nexport { registerResetPasswordHook } from \"./reset_password/resetPasswordRegister\"\n\nexport { FeatureSmtpEmailProps, FeatureSmtpEmailOptions, FeatureSmtpEmailHbsOptions, FeatureSmtpEmailStartSendProps, FeatureSmtpEmailSuccessSendProps } from './smtp_email/smtpEmailType'\nexport { SmtpEmailHook } from \"./smtp_email/smtpEmailRegistry\"\nexport { registerSmtpEmailHook } from \"./smtp_email/smtpEmailRegister\"\n\nexport { FeatureFileStorageProps, FeatureFileStorageOptions, FeatureFileStorageConfiguration, FeatureFileStorageLocalOptions, FeatureFileStorageGoogleCloudOptions, FeatureFileStorageStartUploadProps, FeatureFileStorageSuccessUploadProps } from './file_storage/fileStorageType'\nexport { FileStorageHook } from \"./file_storage/fileStorageRegistry\"\nexport { registerFileStorageHook } from \"./file_storage/fileStorageRegister\"\n\nexport { FeatureUserMeProps, FeatureUserMeRequestGetProps, FeatureUserMeRequestUpdateProps, FeatureUserMeSuccessUpdateProps, FeatureUserMeSuccessChangePasswordProps, FeatureUserMeSuccessRemoveProps } from './user_me/userMeType'\nexport { UserMeHook } from \"./user_me/userMeRegistry\"\nexport { registerUserMeHook } from \"./user_me/userMeRegister\"\n\nexport { FeatureSchedulerSqlProps, FeatureSchedulerSqlSetup, FeatureSchedulerSqlSetupItem, FeatureSchedulerSqlSetupItemQuery, FeatureSchedulerSqlSuccessExecuteProps, FeatureSchedulerSqlFailExecuteProps } from './scheduler_sql/schedulerSqlType'\nexport { SchedulerSqlHook } from \"./scheduler_sql/schedulerSqlRegistry\"\nexport { registerSchedulerSqlHook } from \"./scheduler_sql/schedulerSqlRegister\""]}
|
|
@@ -6,6 +6,7 @@ const utils_1 = require("../../utils");
|
|
|
6
6
|
// Runtime scheduler sql for injected hook
|
|
7
7
|
exports.SchedulerSqlHook = {
|
|
8
8
|
onSetup: () => {
|
|
9
|
+
const { prisma } = require("../../lib"); // lazy require
|
|
9
10
|
return {
|
|
10
11
|
"replication-status": {
|
|
11
12
|
query: {
|
|
@@ -26,15 +27,16 @@ exports.SchedulerSqlHook = {
|
|
|
26
27
|
query: {
|
|
27
28
|
raw: `SELECT pg_size_pretty(pg_database_size('smw_db'))`
|
|
28
29
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
prismaClient: prisma,
|
|
31
|
+
// connection: {
|
|
32
|
+
// provider: "postgresql",
|
|
33
|
+
// host: "1.1.1.1",
|
|
34
|
+
// database: "sample_db",
|
|
35
|
+
// port: 5978,
|
|
36
|
+
// username: "wwpgsql",
|
|
37
|
+
// password: "xxx",
|
|
38
|
+
// ssl: false
|
|
39
|
+
// }
|
|
38
40
|
}
|
|
39
41
|
};
|
|
40
42
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedulerSqlRegistry.js","sourceRoot":"","sources":["../../../src/features/scheduler_sql/schedulerSqlRegistry.ts"],"names":[],"mappings":";;;AAMA,yEAAyE;AAEzE,mCAAoC;AAQpC,0CAA0C;AAC7B,QAAA,gBAAgB,GAAgD;IACzE,OAAO,EAAE,GAAgD,EAAE;QAEvD,OAAO;YACH,oBAAoB,EAAE;gBAClB,KAAK,EAAE;oBACH,GAAG,EAAE,uBAAuB;iBAC/B;aACJ;YACD,eAAe,EAAE;gBACb,KAAK,EAAE;oBACH,GAAG,EAAE,oDAAoD;iBAC5D;aACJ;YACD,cAAc,EAAE;gBACZ,KAAK,EAAE;oBACH,GAAG,EAAE,yBAAyB;iBACjC;aACJ;YACD,cAAc,EAAE;gBACZ,KAAK,EAAE;oBACH,GAAG,EAAE,mDAAmD;iBAC3D;gBACD,
|
|
1
|
+
{"version":3,"file":"schedulerSqlRegistry.js","sourceRoot":"","sources":["../../../src/features/scheduler_sql/schedulerSqlRegistry.ts"],"names":[],"mappings":";;;AAMA,yEAAyE;AAEzE,mCAAoC;AAQpC,0CAA0C;AAC7B,QAAA,gBAAgB,GAAgD;IACzE,OAAO,EAAE,GAAgD,EAAE;QAEvD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe;QAExD,OAAO;YACH,oBAAoB,EAAE;gBAClB,KAAK,EAAE;oBACH,GAAG,EAAE,uBAAuB;iBAC/B;aACJ;YACD,eAAe,EAAE;gBACb,KAAK,EAAE;oBACH,GAAG,EAAE,oDAAoD;iBAC5D;aACJ;YACD,cAAc,EAAE;gBACZ,KAAK,EAAE;oBACH,GAAG,EAAE,yBAAyB;iBACjC;aACJ;YACD,cAAc,EAAE;gBACZ,KAAK,EAAE;oBACH,GAAG,EAAE,mDAAmD;iBAC3D;gBACD,YAAY,EAAE,MAAM;gBACpB,gBAAgB;gBAChB,8BAA8B;gBAC9B,uBAAuB;gBACvB,6BAA6B;gBAC7B,kBAAkB;gBAClB,2BAA2B;gBAC3B,uBAAuB;gBACvB,iBAAiB;gBACjB,IAAI;aACP;SACJ,CAAA;IAEL,CAAC;IACD,gBAAgB,EAAE,KAAK,EAAE,KAA6C,EAAE,EAAE;QACtE,wBAAwB;QACxB,IAAA,kBAAU,EAAC,2DAA2D,CAAC,CAAA;IAC3E,CAAC;IACD,aAAa,EAAE,KAAK,EAAE,KAA0C,EAAE,EAAE;QAChE,wBAAwB;QACxB,IAAA,kBAAU,EAAC,wDAAwD,CAAC,CAAA;IACxE,CAAC;CACJ,CAAA","sourcesContent":["import {\n FeatureSchedulerSqlProps,\n FeatureSchedulerSqlSetup,\n FeatureSchedulerSqlSuccessExecuteProps,\n FeatureSchedulerSqlFailExecuteProps\n} from './schedulerSqlType'\n// import { OneTimeCodeType, ResetPasswordMethod } from \"../../services\";\n\nimport { throwError } from '@/utils'\n\nexport type SchedulerSqlTypes =\n | \"replication-status\"\n | \"health-check\"\n | \"db-size-check\"\n | \"account-list\"\n\n// Runtime scheduler sql for injected hook\nexport const SchedulerSqlHook: FeatureSchedulerSqlProps<SchedulerSqlTypes> = {\n onSetup: (): FeatureSchedulerSqlSetup<SchedulerSqlTypes> => {\n\n const { prisma } = require(\"../../lib\"); // lazy require\n\n return {\n \"replication-status\": {\n query: {\n raw: `SELECT REPLICA STATUS`\n }\n },\n \"db-size-check\": {\n query: {\n raw: `SELECT pg_size_pretty(pg_database_size('smw_db'));`\n }\n },\n \"account-list\": {\n query: {\n raw: `select * from accounts;`\n }\n },\n \"health-check\": {\n query: {\n raw: `SELECT pg_size_pretty(pg_database_size('smw_db'))`\n },\n prismaClient: prisma,\n // connection: {\n // provider: \"postgresql\",\n // host: \"1.1.1.1\",\n // database: \"sample_db\",\n // port: 5978,\n // username: \"wwpgsql\",\n // password: \"xxx\",\n // ssl: false\n // }\n }\n }\n\n },\n onSuccessExecute: async (props: FeatureSchedulerSqlSuccessExecuteProps) => {\n // Default behavior: log\n throwError(`Invalid settings for onSuccessExecute in SchedulerSqlHook`)\n },\n onFailExecute: async (props: FeatureSchedulerSqlFailExecuteProps) => {\n // Default behavior: log\n throwError(`Invalid settings for onFailExecute in SchedulerSqlHook`)\n }\n}"]}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import { FeatureCallbackProps } from "../../utils";
|
|
2
|
-
export type FeatureSchedulerSqlSetupItemConnection = {
|
|
3
|
-
provider: "mysql" | "postgresql";
|
|
4
|
-
host: string;
|
|
5
|
-
port: number;
|
|
6
|
-
database: string;
|
|
7
|
-
username: string;
|
|
8
|
-
password: string;
|
|
9
|
-
ssl?: boolean;
|
|
10
|
-
};
|
|
11
2
|
export type FeatureSchedulerSqlSetupItemQuery = {
|
|
12
3
|
raw: string;
|
|
13
4
|
};
|
|
5
|
+
export type FeatureSchedulerPrismaClient = {
|
|
6
|
+
$queryRawUnsafe: (...args: any[]) => Promise<any>;
|
|
7
|
+
};
|
|
14
8
|
export type FeatureSchedulerSqlSetupItem = {
|
|
15
|
-
connection?: FeatureSchedulerSqlSetupItemConnection;
|
|
16
9
|
query: FeatureSchedulerSqlSetupItemQuery;
|
|
10
|
+
prismaClient?: FeatureSchedulerPrismaClient;
|
|
17
11
|
};
|
|
18
12
|
export type FeatureSchedulerSqlSuccessExecuteProps = FeatureCallbackProps<{
|
|
19
13
|
schedulerSql: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedulerSqlType.js","sourceRoot":"","sources":["../../../src/features/scheduler_sql/schedulerSqlType.ts"],"names":[],"mappings":"","sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"schedulerSqlType.js","sourceRoot":"","sources":["../../../src/features/scheduler_sql/schedulerSqlType.ts"],"names":[],"mappings":"","sourcesContent":["import { FeatureCallbackProps } from \"@/utils\"\nimport type { PrismaClient } from '@prisma/client'\n\n// export type FeatureSchedulerSqlSetupItemConnection = {\n// provider: \"mysql\" | \"postgresql\"\n// host: string\n// port: number\n// database: string\n// username: string\n// password: string\n// ssl?: boolean\n// }\n\nexport type FeatureSchedulerSqlSetupItemQuery = {\n raw: string\n // timeoutMs?: number\n}\n\nexport type FeatureSchedulerPrismaClient = {\n $queryRawUnsafe: (...args: any[]) => Promise<any>\n}\n\nexport type FeatureSchedulerSqlSetupItem = {\n // connection?: FeatureSchedulerSqlSetupItemConnection,\n query: FeatureSchedulerSqlSetupItemQuery,\n prismaClient?: FeatureSchedulerPrismaClient\n}\n\nexport type FeatureSchedulerSqlSuccessExecuteProps = FeatureCallbackProps<{\n schedulerSql: any\n}>\n\nexport type FeatureSchedulerSqlFailExecuteProps = FeatureCallbackProps<{\n schedulerSql: any\n}>\n\nexport type FeatureSchedulerSqlSetup<TType extends string> = {\n [K in TType]: FeatureSchedulerSqlSetupItem\n}\n\nexport type FeatureSchedulerSqlProps<TType extends string> = {\n onSetup: () => FeatureSchedulerSqlSetup<TType>,\n // onRequest: (props: FeatureSchedulerSqlRequestProps) => Promise<any>\n onSuccessExecute: (props: FeatureSchedulerSqlSuccessExecuteProps) => Promise<any>,\n onFailExecute: (props: FeatureSchedulerSqlFailExecuteProps) => Promise<any>\n}"]}
|
|
@@ -15,7 +15,6 @@ export declare const SchedulerSqlService: (props: SchedulerSqlServiceProps) => {
|
|
|
15
15
|
executeSchedulerSql: ({ schedulerSqlKey }: SchedulerSqlExecuteProps) => Promise<{
|
|
16
16
|
data: any;
|
|
17
17
|
scheduler_sql_key: string;
|
|
18
|
-
custom_connection: boolean;
|
|
19
18
|
}>;
|
|
20
19
|
listSchedulerSqls: ({ limit, offset, filters, sortfield, sortorder }: SchedulerSqlListProps) => Promise<{
|
|
21
20
|
data: any;
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SchedulerSqlService = void 0;
|
|
4
4
|
const utils_1 = require("../../utils");
|
|
5
5
|
const models_1 = require("../../models");
|
|
6
|
-
const client_1 = require("@prisma/client");
|
|
7
6
|
const utils_2 = require("../../utils");
|
|
8
7
|
const lib_1 = require("../../lib");
|
|
9
8
|
const features_1 = require("../../features");
|
|
@@ -15,28 +14,28 @@ let defaultSqlSelect = (0, lib_2.buildSchedulerLogDefaultSqlSelect)();
|
|
|
15
14
|
const SchedulerSqlService = (props) => {
|
|
16
15
|
const { ...rest } = props;
|
|
17
16
|
const schedulerLogModel = (0, models_1.SchedulerLogModel)({ ...rest });
|
|
18
|
-
const buildPrismaUrl = (conn) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
const getCustomPrismaClient = (connection) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
17
|
+
// const buildPrismaUrl = (conn: FeatureSchedulerSqlSetupItemConnection) => {
|
|
18
|
+
// if (conn.provider === "mysql") {
|
|
19
|
+
// return `mysql://${conn.username}:${conn.password}@${conn.host}:${conn.port}/${conn.database}`
|
|
20
|
+
// }
|
|
21
|
+
// if (conn.provider === "postgresql") {
|
|
22
|
+
// return `postgresql://${conn.username}:${conn.password}@${conn.host}:${conn.port}/${conn.database}`
|
|
23
|
+
// }
|
|
24
|
+
// throw new Error(`Unsupported DB type: ${conn?.provider ?? "-"}`)
|
|
25
|
+
// }
|
|
26
|
+
// const getCustomPrismaClient = (connection: FeatureSchedulerSqlSetupItemConnection) => {
|
|
27
|
+
// const url = buildPrismaUrl(connection)
|
|
28
|
+
// if (prismaCache.has(url)) {
|
|
29
|
+
// return prismaCache.get(url)!
|
|
30
|
+
// }
|
|
31
|
+
// const client = new PrismaClient({
|
|
32
|
+
// datasources: {
|
|
33
|
+
// db: { url },
|
|
34
|
+
// },
|
|
35
|
+
// })
|
|
36
|
+
// prismaCache.set(url, client)
|
|
37
|
+
// return client
|
|
38
|
+
// }
|
|
40
39
|
const executeSchedulerSql = async ({ schedulerSqlKey }) => {
|
|
41
40
|
const hookSetup = await features_1.SchedulerSqlHook.onSetup();
|
|
42
41
|
// validate the sql key is in the setup hook given
|
|
@@ -47,21 +46,28 @@ const SchedulerSqlService = (props) => {
|
|
|
47
46
|
const selectedSqlConfig = hookSetup[schedulerSqlKey];
|
|
48
47
|
// console.log('selectedSqlConfig', selectedSqlConfig)
|
|
49
48
|
const sqlRaw = `${selectedSqlConfig.query.raw}`;
|
|
50
|
-
const connection = selectedSqlConfig.connection
|
|
49
|
+
// const connection = selectedSqlConfig.connection
|
|
50
|
+
const customPrismaClient = selectedSqlConfig.prismaClient;
|
|
51
51
|
let responseData;
|
|
52
52
|
let response = {
|
|
53
53
|
scheduler_sql_key: `${schedulerSqlKey}`,
|
|
54
|
-
custom_connection: Boolean(connection),
|
|
54
|
+
// custom_connection: Boolean(connection),
|
|
55
55
|
data: null
|
|
56
56
|
};
|
|
57
|
+
const { prismaClient, ...restSelectedSqlConfig } = selectedSqlConfig;
|
|
58
|
+
const returnSelectedSqlConfig = {
|
|
59
|
+
...restSelectedSqlConfig,
|
|
60
|
+
injectedPrismaClient: customPrismaClient ? true : false
|
|
61
|
+
};
|
|
57
62
|
try {
|
|
58
63
|
// use back the default prisma connection
|
|
59
|
-
if (!
|
|
64
|
+
if (!customPrismaClient) {
|
|
60
65
|
responseData = await schedulerLogModel.raw(sqlRaw);
|
|
61
66
|
}
|
|
62
67
|
else { // direct connect to provider via prisma
|
|
63
|
-
const dbClient = getCustomPrismaClient(connection)
|
|
64
|
-
responseData = await dbClient.$queryRawUnsafe(sqlRaw)
|
|
68
|
+
// const dbClient = getCustomPrismaClient(connection)
|
|
69
|
+
// responseData = await dbClient.$queryRawUnsafe(sqlRaw)
|
|
70
|
+
responseData = await customPrismaClient.$queryRawUnsafe(sqlRaw);
|
|
65
71
|
}
|
|
66
72
|
let customResponseData = null;
|
|
67
73
|
// Call the consumer hook, if success
|
|
@@ -72,7 +78,7 @@ const SchedulerSqlService = (props) => {
|
|
|
72
78
|
schedulerSql: {
|
|
73
79
|
...response,
|
|
74
80
|
data: responseData,
|
|
75
|
-
selectedSqlConfig
|
|
81
|
+
selectedSqlConfig: returnSelectedSqlConfig
|
|
76
82
|
}
|
|
77
83
|
}
|
|
78
84
|
}));
|
|
@@ -92,7 +98,7 @@ const SchedulerSqlService = (props) => {
|
|
|
92
98
|
callbackParams: {
|
|
93
99
|
schedulerSql: {
|
|
94
100
|
...response,
|
|
95
|
-
selectedSqlConfig,
|
|
101
|
+
selectedSqlConfig: returnSelectedSqlConfig,
|
|
96
102
|
errorMessage
|
|
97
103
|
}
|
|
98
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchedulerSqlService.js","sourceRoot":"","sources":["../../../src/services/scheduler/SchedulerSqlService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n SchedulerLogModel,\n ModelSchedulerLogFields\n} from \"@/models\";\n\nimport { PrismaClient } from \"@prisma/client\"\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps, getCurrentDateTimeISO, buildFeatureCallbackProps } from \"@/utils\";\n\nimport { InjectionFieldModuleRef } from \"@/services\"\n\nimport { getSchedulerLogSqlRelationMaps, buildSqlRelation, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, getListWithCount } from \"@/lib\";\n\nimport { SchedulerSqlHook, FeatureSchedulerSqlSetupItemConnection, FeatureSchedulerSqlSetupItemQuery } from \"@/features\"\n\nimport {\n buildSchedulerLogDefaultSqlSelect,\n buildSchedulerLogMainSqlSelect\n} from \"@/lib\";\n\nexport type SchedulerSqlModuleRef = InjectionFieldModuleRef\n\nexport type SchedulerSqlServiceProps = DefaultServiceProps & {};\n\nexport type SchedulerSqlGetProps = Omit<QueryGet, \"datatypes\"> & {\n id: number,\n};\n\nexport type SchedulerSqlListProps = Omit<QueryList, \"datatypes\"> & {\n};\n\nexport type SchedulerSqlExecuteProps = {\n schedulerSqlKey: string,\n}\n\nconst prismaCache = new Map<string, PrismaClient>()\n\nconst { relationKeys, sqlRelationMaps } = getSchedulerLogSqlRelationMaps()\n\nlet mainSqlSelect = buildSchedulerLogMainSqlSelect()\nlet defaultSqlSelect = buildSchedulerLogDefaultSqlSelect()\n\nexport const SchedulerSqlService = (props: SchedulerSqlServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const schedulerLogModel = SchedulerLogModel({ ...rest })\n\n const buildPrismaUrl = (conn: FeatureSchedulerSqlSetupItemConnection) => {\n if (conn.provider === \"mysql\") {\n return `mysql://${conn.username}:${conn.password}@${conn.host}:${conn.port}/${conn.database}`\n }\n\n if (conn.provider === \"postgresql\") {\n return `postgresql://${conn.username}:${conn.password}@${conn.host}:${conn.port}/${conn.database}`\n }\n\n throw new Error(`Unsupported DB type: ${conn?.provider ?? \"-\"}`)\n }\n\n const getCustomPrismaClient = (connection: FeatureSchedulerSqlSetupItemConnection) => {\n\n const url = buildPrismaUrl(connection)\n\n if (prismaCache.has(url)) {\n return prismaCache.get(url)!\n }\n\n const client = new PrismaClient({\n datasources: {\n db: { url },\n },\n })\n\n prismaCache.set(url, client)\n\n return client\n }\n\n const executeSchedulerSql = async ({ schedulerSqlKey }: SchedulerSqlExecuteProps) => {\n\n const hookSetup = await SchedulerSqlHook.onSetup()\n\n // validate the sql key is in the setup hook given\n if (!(schedulerSqlKey in hookSetup)) {\n throwError(`Invalid Scheduler Sql Key in the feature config setup: ${schedulerSqlKey}`)\n }\n\n // console.log('hookSetup', hookSetup, schedulerSqlKey)\n\n const selectedSqlConfig = hookSetup[schedulerSqlKey as keyof typeof hookSetup]\n\n // console.log('selectedSqlConfig', selectedSqlConfig)\n\n const sqlRaw = `${selectedSqlConfig.query.raw}`\n\n const connection = selectedSqlConfig.connection\n\n let responseData: any\n let response = {\n scheduler_sql_key: `${schedulerSqlKey}`,\n custom_connection: Boolean(connection),\n data: null\n }\n\n try {\n\n // use back the default prisma connection\n if (!connection) {\n responseData = await schedulerLogModel.raw(sqlRaw)\n } else { // direct connect to provider via prisma\n const dbClient = getCustomPrismaClient(connection)\n responseData = await dbClient.$queryRawUnsafe(sqlRaw)\n }\n\n let customResponseData: any = null\n\n // Call the consumer hook, if success\n if (SchedulerSqlHook?.onSuccessExecute) {\n customResponseData = await SchedulerSqlHook.onSuccessExecute(buildFeatureCallbackProps({\n defaultServiceProps: rest,\n callbackParams: {\n schedulerSql: {\n ...response,\n data: responseData,\n selectedSqlConfig\n }\n }\n }))\n }\n\n return {\n ...response,\n data: customResponseData ? customResponseData : responseData\n }\n\n } catch (error: unknown) {\n\n const err = error as any\n\n const errorMessage =\n err?.message ?? String(err) ?? \"-\"\n\n // Call the consumer hook, if fail\n if (SchedulerSqlHook?.onFailExecute) {\n await SchedulerSqlHook.onFailExecute(buildFeatureCallbackProps({\n defaultServiceProps: rest,\n callbackParams: {\n schedulerSql: {\n ...response,\n selectedSqlConfig,\n errorMessage\n }\n }\n }))\n }\n\n throw error\n }\n }\n\n const getSchedulerSql = async ({ id }: SchedulerSqlGetProps) => {\n\n let { data } = await listSchedulerSqls({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelSchedulerLogFields.scheduler_log_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelSchedulerLogFields.scheduler_log_id}`,\n sortorder: \"ASC\",\n })\n\n return data[0] ?? null;\n\n };\n\n const listSchedulerSqls = async ({ limit, offset, filters = [], sortfield, sortorder }: SchedulerSqlListProps) => {\n\n let sqlSelect = [\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"sreq\", \"users\", \"creator\", [\"sreq.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"sreq\", \"users\", \"updater\", [\"sreq.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `sreq.isdelete = false`,\n `sreq.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n // get the listing data & count\n const { data, total } = await getListWithCount({\n model: schedulerLogModel,\n tableName: \"scheduler_requests\",\n mainAlias: \"sreq\",\n countKey: `${ModelSchedulerLogFields.scheduler_log_id}`,\n accountId: rest.accountId,\n sqlRelationMaps,\n filters,\n filterColumns,\n sqlSelect,\n sqlSelectAgg: [],\n sqlRelation,\n sqlRelationAgg: [],\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n const response = {\n data,\n total\n }\n\n return response\n\n };\n\n return {\n getSchedulerSql,\n executeSchedulerSql,\n listSchedulerSqls\n }\n\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"SchedulerSqlService.js","sourceRoot":"","sources":["../../../src/services/scheduler/SchedulerSqlService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n SchedulerLogModel,\n ModelSchedulerLogFields\n} from \"@/models\";\n\nimport { PrismaClient } from \"@prisma/client\"\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps, getCurrentDateTimeISO, buildFeatureCallbackProps } from \"@/utils\";\n\nimport { InjectionFieldModuleRef } from \"@/services\"\n\nimport { getSchedulerLogSqlRelationMaps, buildSqlRelation, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, getListWithCount } from \"@/lib\";\n\nimport { SchedulerSqlHook } from \"@/features\"\n\nimport {\n buildSchedulerLogDefaultSqlSelect,\n buildSchedulerLogMainSqlSelect\n} from \"@/lib\";\n\nexport type SchedulerSqlModuleRef = InjectionFieldModuleRef\n\nexport type SchedulerSqlServiceProps = DefaultServiceProps & {};\n\nexport type SchedulerSqlGetProps = Omit<QueryGet, \"datatypes\"> & {\n id: number,\n};\n\nexport type SchedulerSqlListProps = Omit<QueryList, \"datatypes\"> & {\n};\n\nexport type SchedulerSqlExecuteProps = {\n schedulerSqlKey: string,\n}\n\nconst prismaCache = new Map<string, PrismaClient>()\n\nconst { relationKeys, sqlRelationMaps } = getSchedulerLogSqlRelationMaps()\n\nlet mainSqlSelect = buildSchedulerLogMainSqlSelect()\nlet defaultSqlSelect = buildSchedulerLogDefaultSqlSelect()\n\nexport const SchedulerSqlService = (props: SchedulerSqlServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const schedulerLogModel = SchedulerLogModel({ ...rest })\n\n // const buildPrismaUrl = (conn: FeatureSchedulerSqlSetupItemConnection) => {\n // if (conn.provider === \"mysql\") {\n // return `mysql://${conn.username}:${conn.password}@${conn.host}:${conn.port}/${conn.database}`\n // }\n\n // if (conn.provider === \"postgresql\") {\n // return `postgresql://${conn.username}:${conn.password}@${conn.host}:${conn.port}/${conn.database}`\n // }\n\n // throw new Error(`Unsupported DB type: ${conn?.provider ?? \"-\"}`)\n // }\n\n // const getCustomPrismaClient = (connection: FeatureSchedulerSqlSetupItemConnection) => {\n\n // const url = buildPrismaUrl(connection)\n\n // if (prismaCache.has(url)) {\n // return prismaCache.get(url)!\n // }\n\n // const client = new PrismaClient({\n // datasources: {\n // db: { url },\n // },\n // })\n\n // prismaCache.set(url, client)\n\n // return client\n // }\n\n const executeSchedulerSql = async ({ schedulerSqlKey }: SchedulerSqlExecuteProps) => {\n\n const hookSetup = await SchedulerSqlHook.onSetup()\n\n // validate the sql key is in the setup hook given\n if (!(schedulerSqlKey in hookSetup)) {\n throwError(`Invalid Scheduler Sql Key in the feature config setup: ${schedulerSqlKey}`)\n }\n\n // console.log('hookSetup', hookSetup, schedulerSqlKey)\n\n const selectedSqlConfig = hookSetup[schedulerSqlKey as keyof typeof hookSetup]\n\n // console.log('selectedSqlConfig', selectedSqlConfig)\n\n const sqlRaw = `${selectedSqlConfig.query.raw}`\n\n // const connection = selectedSqlConfig.connection\n\n const customPrismaClient = selectedSqlConfig.prismaClient\n\n let responseData: any\n let response = {\n scheduler_sql_key: `${schedulerSqlKey}`,\n // custom_connection: Boolean(connection),\n data: null\n }\n\n const { prismaClient, ...restSelectedSqlConfig } = selectedSqlConfig\n\n const returnSelectedSqlConfig = {\n ...restSelectedSqlConfig,\n injectedPrismaClient: customPrismaClient ? true : false\n }\n\n try {\n\n // use back the default prisma connection\n if (!customPrismaClient) {\n responseData = await schedulerLogModel.raw(sqlRaw)\n } else { // direct connect to provider via prisma\n // const dbClient = getCustomPrismaClient(connection)\n // responseData = await dbClient.$queryRawUnsafe(sqlRaw)\n responseData = await customPrismaClient.$queryRawUnsafe(sqlRaw)\n }\n\n let customResponseData: any = null\n\n // Call the consumer hook, if success\n if (SchedulerSqlHook?.onSuccessExecute) {\n customResponseData = await SchedulerSqlHook.onSuccessExecute(buildFeatureCallbackProps({\n defaultServiceProps: rest,\n callbackParams: {\n schedulerSql: {\n ...response,\n data: responseData,\n selectedSqlConfig: returnSelectedSqlConfig\n }\n }\n }))\n }\n\n return {\n ...response,\n data: customResponseData ? customResponseData : responseData\n }\n\n } catch (error: unknown) {\n\n const err = error as any\n\n const errorMessage =\n err?.message ?? String(err) ?? \"-\"\n\n // Call the consumer hook, if fail\n if (SchedulerSqlHook?.onFailExecute) {\n await SchedulerSqlHook.onFailExecute(buildFeatureCallbackProps({\n defaultServiceProps: rest,\n callbackParams: {\n schedulerSql: {\n ...response,\n selectedSqlConfig: returnSelectedSqlConfig,\n errorMessage\n }\n }\n }))\n }\n\n throw error\n }\n }\n\n const getSchedulerSql = async ({ id }: SchedulerSqlGetProps) => {\n\n let { data } = await listSchedulerSqls({\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelSchedulerLogFields.scheduler_log_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelSchedulerLogFields.scheduler_log_id}`,\n sortorder: \"ASC\",\n })\n\n return data[0] ?? null;\n\n };\n\n const listSchedulerSqls = async ({ limit, offset, filters = [], sortfield, sortorder }: SchedulerSqlListProps) => {\n\n let sqlSelect = [\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, defaultSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"sreq\", \"users\", \"creator\", [\"sreq.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"sreq\", \"users\", \"updater\", [\"sreq.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...defaultSqlSelect\n }\n\n let sqlWhere = [\n `sreq.isdelete = false`,\n `sreq.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n // get the listing data & count\n const { data, total } = await getListWithCount({\n model: schedulerLogModel,\n tableName: \"scheduler_requests\",\n mainAlias: \"sreq\",\n countKey: `${ModelSchedulerLogFields.scheduler_log_id}`,\n accountId: rest.accountId,\n sqlRelationMaps,\n filters,\n filterColumns,\n sqlSelect,\n sqlSelectAgg: [],\n sqlRelation,\n sqlRelationAgg: [],\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset\n })\n\n const response = {\n data,\n total\n }\n\n return response\n\n };\n\n return {\n getSchedulerSql,\n executeSchedulerSql,\n listSchedulerSqls\n }\n\n}\n\n"]}
|