@memberjunction/server 2.29.2 → 2.31.0
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/entitySubclasses/reportEntity.server.d.ts.map +1 -1
- package/dist/entitySubclasses/reportEntity.server.js +85 -13
- package/dist/entitySubclasses/reportEntity.server.js.map +1 -1
- package/dist/generated/generated.d.ts +206 -0
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +1307 -0
- package/dist/generated/generated.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/resolvers/GetDataContextDataResolver.d.ts +28 -0
- package/dist/resolvers/GetDataContextDataResolver.d.ts.map +1 -0
- package/dist/resolvers/GetDataContextDataResolver.js +151 -0
- package/dist/resolvers/GetDataContextDataResolver.js.map +1 -0
- package/dist/resolvers/GetDataResolver.d.ts.map +1 -1
- package/dist/resolvers/GetDataResolver.js.map +1 -1
- package/dist/resolvers/QueryResolver.d.ts +2 -2
- package/dist/resolvers/QueryResolver.d.ts.map +1 -1
- package/dist/resolvers/QueryResolver.js +18 -6
- package/dist/resolvers/QueryResolver.js.map +1 -1
- package/package.json +22 -22
- package/src/entitySubclasses/reportEntity.server.ts +117 -17
- package/src/generated/generated.ts +897 -73
- package/src/index.ts +1 -0
- package/src/resolvers/GetDataContextDataResolver.ts +136 -0
- package/src/resolvers/GetDataResolver.ts +3 -1
- package/src/resolvers/QueryResolver.ts +24 -4
package/src/index.ts
CHANGED
|
@@ -63,6 +63,7 @@ export * from './resolvers/ReportResolver.js';
|
|
|
63
63
|
export * from './resolvers/SyncRolesUsersResolver.js';
|
|
64
64
|
export * from './resolvers/SyncDataResolver.js';
|
|
65
65
|
export * from './resolvers/GetDataResolver.js';
|
|
66
|
+
export * from './resolvers/GetDataContextDataResolver.js';
|
|
66
67
|
export * from './resolvers/TransactionGroupResolver.js';
|
|
67
68
|
|
|
68
69
|
export { GetReadOnlyDataSource, GetReadWriteDataSource } from './util.js';
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Arg, Ctx, Field, ObjectType, Query } from "type-graphql";
|
|
2
|
+
import { AppContext } from "../types";
|
|
3
|
+
import { DataContext } from "@memberjunction/data-context";
|
|
4
|
+
import { GetReadOnlyDataSource } from "../util";
|
|
5
|
+
import { Metadata } from "@memberjunction/core";
|
|
6
|
+
import { DataContextItemEntity } from "@memberjunction/core-entities";
|
|
7
|
+
|
|
8
|
+
@ObjectType()
|
|
9
|
+
export class GetDataContextItemDataOutputType {
|
|
10
|
+
@Field(() => Boolean)
|
|
11
|
+
Success: boolean;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* If not successful, this will be the error message.
|
|
15
|
+
*/
|
|
16
|
+
@Field(() => String, { nullable: true })
|
|
17
|
+
ErrorMessage: string | null;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* If successful, this will be the JSON for the data context item's data.
|
|
21
|
+
*/
|
|
22
|
+
@Field(() => String, { nullable: true })
|
|
23
|
+
Result: string | null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@ObjectType()
|
|
27
|
+
export class GetDataContextDataOutputType {
|
|
28
|
+
@Field(() => Boolean)
|
|
29
|
+
Success: boolean;
|
|
30
|
+
|
|
31
|
+
@Field(() => [String], { nullable: 'itemsAndList' }) // Allow nulls inside array & entire field nullable
|
|
32
|
+
ErrorMessages: (string | null)[];
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Each data context item's results will be converted to JSON and returned as a string
|
|
36
|
+
*/
|
|
37
|
+
@Field(() => [String], { nullable: 'itemsAndList' }) // Allow nulls inside array & entire field nullable
|
|
38
|
+
Results: (string | null)[];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
export class GetDataContextDataResolver {
|
|
43
|
+
/**
|
|
44
|
+
* Returns data for a given data context item.
|
|
45
|
+
* @param DataContextItemID
|
|
46
|
+
*/
|
|
47
|
+
@Query(() => GetDataContextItemDataOutputType)
|
|
48
|
+
async GetDataContextItemData(
|
|
49
|
+
@Arg('DataContextItemID', () => String) DataContextItemID: string,
|
|
50
|
+
@Ctx() appCtx: AppContext
|
|
51
|
+
) {
|
|
52
|
+
try {
|
|
53
|
+
const ds = GetReadOnlyDataSource(appCtx.dataSources, {
|
|
54
|
+
allowFallbackToReadWrite: true,
|
|
55
|
+
})
|
|
56
|
+
const md = new Metadata();
|
|
57
|
+
const dciData = await md.GetEntityObject<DataContextItemEntity>("Data Context Items", appCtx.userPayload.userRecord);
|
|
58
|
+
if (await dciData.Load(DataContextItemID)) {
|
|
59
|
+
const dci = DataContext.CreateDataContextItem(); // use class factory to get whatever lowest level sub-class is registered
|
|
60
|
+
await dci.LoadMetadataFromEntityRecord(dciData, Metadata.Provider, appCtx.userPayload.userRecord);
|
|
61
|
+
// now the metadata is loaded so we can call the regular load function
|
|
62
|
+
if (await dci.LoadData(ds)) {
|
|
63
|
+
return {
|
|
64
|
+
Success: true,
|
|
65
|
+
ErrorMessage: null,
|
|
66
|
+
Result: JSON.stringify(dci.Data),
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return {
|
|
71
|
+
Success: false,
|
|
72
|
+
ErrorMessage: 'Error loading data context item data',
|
|
73
|
+
Result: null,
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return {
|
|
79
|
+
Success: false,
|
|
80
|
+
ErrorMessage: 'Error loading data context item metadata',
|
|
81
|
+
Result: null,
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
return {
|
|
87
|
+
Success: false,
|
|
88
|
+
ErrorMessage: e,
|
|
89
|
+
Result: null,
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Returns data for a given data context.
|
|
96
|
+
* @param DataContextID
|
|
97
|
+
*/
|
|
98
|
+
@Query(() => GetDataContextDataOutputType)
|
|
99
|
+
async GetDataContextData(
|
|
100
|
+
@Arg('DataContextID', () => String) DataContextID: string,
|
|
101
|
+
@Ctx() appCtx: AppContext
|
|
102
|
+
) {
|
|
103
|
+
try {
|
|
104
|
+
// our job here is to load the entire data context, so we do that with the Data Context object
|
|
105
|
+
const dc = new DataContext();
|
|
106
|
+
const ds = GetReadOnlyDataSource(appCtx.dataSources, {
|
|
107
|
+
allowFallbackToReadWrite: true,
|
|
108
|
+
})
|
|
109
|
+
const success = await dc.Load(DataContextID, ds, true, false, 0, appCtx.userPayload.userRecord);
|
|
110
|
+
if (success) {
|
|
111
|
+
const retVal = {
|
|
112
|
+
Success: true,
|
|
113
|
+
ErrorMessages: null,
|
|
114
|
+
Results: dc.Items.map((item) => {
|
|
115
|
+
return JSON.stringify(item.Data);
|
|
116
|
+
}),
|
|
117
|
+
}
|
|
118
|
+
return retVal;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
return {
|
|
122
|
+
Success: false,
|
|
123
|
+
ErrorMessages: ['Error loading data context'],
|
|
124
|
+
Results: null,
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
return {
|
|
130
|
+
Success: false,
|
|
131
|
+
ErrorMessages: [e],
|
|
132
|
+
Results: null,
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -96,7 +96,9 @@ export class SimpleEntityFieldOutputType {
|
|
|
96
96
|
MaxLength: number;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
/**
|
|
100
|
+
* General purpose resolver for fetching different kinds of data payloads for SYSTEM users only.
|
|
101
|
+
*/
|
|
100
102
|
export class GetDataResolver {
|
|
101
103
|
/**
|
|
102
104
|
* This query will sync the specified items with the existing system. Items will be processed in order and the results of each operation will be returned in the Results array within the return value.
|
|
@@ -30,9 +30,19 @@ export class RunQueryResultType {
|
|
|
30
30
|
@Resolver(RunQueryResultType)
|
|
31
31
|
export class ReportResolver {
|
|
32
32
|
@Query(() => RunQueryResultType)
|
|
33
|
-
async GetQueryData(@Arg('QueryID', () => String) QueryID: string,
|
|
33
|
+
async GetQueryData(@Arg('QueryID', () => String) QueryID: string,
|
|
34
|
+
@Ctx() context: AppContext,
|
|
35
|
+
@Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
|
|
36
|
+
@Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
|
|
34
37
|
const runQuery = new RunQuery();
|
|
35
|
-
const result = await runQuery.RunQuery(
|
|
38
|
+
const result = await runQuery.RunQuery(
|
|
39
|
+
{
|
|
40
|
+
QueryID: QueryID,
|
|
41
|
+
CategoryID: CategoryID,
|
|
42
|
+
CategoryName: CategoryName
|
|
43
|
+
},
|
|
44
|
+
context.userPayload.userRecord);
|
|
45
|
+
|
|
36
46
|
return {
|
|
37
47
|
QueryID: QueryID,
|
|
38
48
|
QueryName: result.QueryName,
|
|
@@ -45,9 +55,19 @@ export class ReportResolver {
|
|
|
45
55
|
}
|
|
46
56
|
|
|
47
57
|
@Query(() => RunQueryResultType)
|
|
48
|
-
async GetQueryDataByName(@Arg('QueryName', () => String) QueryName: string,
|
|
58
|
+
async GetQueryDataByName(@Arg('QueryName', () => String) QueryName: string,
|
|
59
|
+
@Ctx() context: AppContext,
|
|
60
|
+
@Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
|
|
61
|
+
@Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
|
|
49
62
|
const runQuery = new RunQuery();
|
|
50
|
-
const result = await runQuery.RunQuery(
|
|
63
|
+
const result = await runQuery.RunQuery(
|
|
64
|
+
{
|
|
65
|
+
QueryName: QueryName,
|
|
66
|
+
CategoryID: CategoryID,
|
|
67
|
+
CategoryName: CategoryName
|
|
68
|
+
},
|
|
69
|
+
context.userPayload.userRecord);
|
|
70
|
+
|
|
51
71
|
return {
|
|
52
72
|
QueryID: result.QueryID,
|
|
53
73
|
QueryName: QueryName,
|