@memberjunction/server 2.52.0 → 2.54.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.
@@ -72,7 +72,7 @@ export class FileResolver extends FileResolverBase {
72
72
 
73
73
  // Save the file record with the updated input
74
74
  const mapper = new FieldMapper();
75
- fileEntity.LoadFromData(mapper.ReverseMapFields({ ...input }));
75
+ await fileEntity.LoadFromData(mapper.ReverseMapFields({ ...input }));
76
76
  fileEntity.SetMany(mapper.ReverseMapFields({ ...updatedInput }));
77
77
  await fileEntity.Save();
78
78
  const File = mapper.MapFields({ ...fileEntity.GetAll() });
@@ -1,81 +1,134 @@
1
- // Queries are MemberJunction primitive operations that are used to retrieve data from the server from any stored query
2
- import { RunQuery } from '@memberjunction/core';
3
- import { Arg, Ctx, Field, Int, ObjectType, Query, Resolver } from 'type-graphql';
4
- import { AppContext } from '../types.js';
5
-
6
- @ObjectType()
7
- export class RunQueryResultType {
8
- @Field()
9
- QueryID: string;
10
-
11
- @Field()
12
- QueryName: string;
13
-
14
- @Field()
15
- Success: boolean;
16
-
17
- @Field()
18
- Results: string;
19
-
20
- @Field()
21
- RowCount: number;
22
-
23
- @Field()
24
- ExecutionTime: number;
25
-
26
- @Field()
27
- ErrorMessage: string;
28
- }
29
-
30
- @Resolver(RunQueryResultType)
31
- export class ReportResolver {
32
- @Query(() => RunQueryResultType)
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> {
37
- const runQuery = new RunQuery();
38
- const result = await runQuery.RunQuery(
39
- {
40
- QueryID: QueryID,
41
- CategoryID: CategoryID,
42
- CategoryName: CategoryName
43
- },
44
- context.userPayload.userRecord);
45
-
46
- return {
47
- QueryID: QueryID,
48
- QueryName: result.QueryName,
49
- Success: result.Success,
50
- Results: JSON.stringify(result.Results),
51
- RowCount: result.RowCount,
52
- ExecutionTime: result.ExecutionTime,
53
- ErrorMessage: result.ErrorMessage,
54
- };
55
- }
56
-
57
- @Query(() => RunQueryResultType)
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> {
62
- const runQuery = new RunQuery();
63
- const result = await runQuery.RunQuery(
64
- {
65
- QueryName: QueryName,
66
- CategoryID: CategoryID,
67
- CategoryName: CategoryName
68
- },
69
- context.userPayload.userRecord);
70
-
71
- return {
72
- QueryID: result.QueryID,
73
- QueryName: QueryName,
74
- Success: result.Success,
75
- Results: JSON.stringify(result.Results),
76
- RowCount: result.RowCount,
77
- ExecutionTime: result.ExecutionTime,
78
- ErrorMessage: result.ErrorMessage,
79
- };
80
- }
81
- }
1
+ // Queries are MemberJunction primitive operations that are used to retrieve data from the server from any stored query
2
+ import { RunQuery } from '@memberjunction/core';
3
+ import { Arg, Ctx, Field, Int, ObjectType, Query, Resolver } from 'type-graphql';
4
+ import { AppContext } from '../types.js';
5
+ import { RequireSystemUser } from '../directives/RequireSystemUser.js';
6
+
7
+ @ObjectType()
8
+ export class RunQueryResultType {
9
+ @Field()
10
+ QueryID: string;
11
+
12
+ @Field()
13
+ QueryName: string;
14
+
15
+ @Field()
16
+ Success: boolean;
17
+
18
+ @Field()
19
+ Results: string;
20
+
21
+ @Field()
22
+ RowCount: number;
23
+
24
+ @Field()
25
+ ExecutionTime: number;
26
+
27
+ @Field()
28
+ ErrorMessage: string;
29
+ }
30
+
31
+ @Resolver(RunQueryResultType)
32
+ export class ReportResolver {
33
+ @Query(() => RunQueryResultType)
34
+ async GetQueryData(@Arg('QueryID', () => String) QueryID: string,
35
+ @Ctx() context: AppContext,
36
+ @Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
37
+ @Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
38
+ const runQuery = new RunQuery();
39
+ const result = await runQuery.RunQuery(
40
+ {
41
+ QueryID: QueryID,
42
+ CategoryID: CategoryID,
43
+ CategoryName: CategoryName
44
+ },
45
+ context.userPayload.userRecord);
46
+
47
+ return {
48
+ QueryID: QueryID,
49
+ QueryName: result.QueryName,
50
+ Success: result.Success,
51
+ Results: JSON.stringify(result.Results),
52
+ RowCount: result.RowCount,
53
+ ExecutionTime: result.ExecutionTime,
54
+ ErrorMessage: result.ErrorMessage,
55
+ };
56
+ }
57
+
58
+ @Query(() => RunQueryResultType)
59
+ async GetQueryDataByName(@Arg('QueryName', () => String) QueryName: string,
60
+ @Ctx() context: AppContext,
61
+ @Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
62
+ @Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
63
+ const runQuery = new RunQuery();
64
+ const result = await runQuery.RunQuery(
65
+ {
66
+ QueryName: QueryName,
67
+ CategoryID: CategoryID,
68
+ CategoryName: CategoryName
69
+ },
70
+ context.userPayload.userRecord);
71
+
72
+ return {
73
+ QueryID: result.QueryID,
74
+ QueryName: QueryName,
75
+ Success: result.Success,
76
+ Results: JSON.stringify(result.Results),
77
+ RowCount: result.RowCount,
78
+ ExecutionTime: result.ExecutionTime,
79
+ ErrorMessage: result.ErrorMessage,
80
+ };
81
+ }
82
+
83
+ @RequireSystemUser()
84
+ @Query(() => RunQueryResultType)
85
+ async GetQueryDataSystemUser(@Arg('QueryID', () => String) QueryID: string,
86
+ @Ctx() context: AppContext,
87
+ @Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
88
+ @Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
89
+ const runQuery = new RunQuery();
90
+ const result = await runQuery.RunQuery(
91
+ {
92
+ QueryID: QueryID,
93
+ CategoryID: CategoryID,
94
+ CategoryName: CategoryName
95
+ },
96
+ context.userPayload.userRecord);
97
+
98
+ return {
99
+ QueryID: QueryID,
100
+ QueryName: result.QueryName,
101
+ Success: result.Success,
102
+ Results: JSON.stringify(result.Results),
103
+ RowCount: result.RowCount,
104
+ ExecutionTime: result.ExecutionTime,
105
+ ErrorMessage: result.ErrorMessage,
106
+ };
107
+ }
108
+
109
+ @RequireSystemUser()
110
+ @Query(() => RunQueryResultType)
111
+ async GetQueryDataByNameSystemUser(@Arg('QueryName', () => String) QueryName: string,
112
+ @Ctx() context: AppContext,
113
+ @Arg('CategoryID', () => String, {nullable: true}) CategoryID?: string,
114
+ @Arg('CategoryName', () => String, {nullable: true}) CategoryName?: string): Promise<RunQueryResultType> {
115
+ const runQuery = new RunQuery();
116
+ const result = await runQuery.RunQuery(
117
+ {
118
+ QueryName: QueryName,
119
+ CategoryID: CategoryID,
120
+ CategoryName: CategoryName
121
+ },
122
+ context.userPayload.userRecord);
123
+
124
+ return {
125
+ QueryID: result.QueryID,
126
+ QueryName: QueryName,
127
+ Success: result.Success,
128
+ Results: JSON.stringify(result.Results),
129
+ RowCount: result.RowCount,
130
+ ExecutionTime: result.ExecutionTime,
131
+ ErrorMessage: result.ErrorMessage,
132
+ };
133
+ }
134
+ }
@@ -33,6 +33,9 @@ export class AIPromptRunResult {
33
33
 
34
34
  @Field({ nullable: true })
35
35
  validationResult?: string;
36
+
37
+ @Field({ nullable: true })
38
+ chatResult?: string;
36
39
  }
37
40
 
38
41
  @Resolver()
@@ -194,7 +197,8 @@ export class RunAIPromptResolver extends ResolverBase {
194
197
  executionTimeMs: executionTime,
195
198
  tokensUsed: result.tokensUsed,
196
199
  promptRunId: result.promptRun?.ID,
197
- validationResult: result.validationResult ? JSON.stringify(result.validationResult) : undefined
200
+ validationResult: result.validationResult ? JSON.stringify(result.validationResult) : undefined,
201
+ chatResult: result.chatResult ? JSON.stringify(result.chatResult) : undefined
198
202
  };
199
203
  } else {
200
204
  LogError(`AI Prompt run failed for ${promptEntity.Name}: ${result.errorMessage}`);
@@ -202,7 +206,8 @@ export class RunAIPromptResolver extends ResolverBase {
202
206
  success: false,
203
207
  error: result.errorMessage,
204
208
  executionTimeMs: executionTime,
205
- promptRunId: result.promptRun?.ID
209
+ promptRunId: result.promptRun?.ID,
210
+ chatResult: result.chatResult ? JSON.stringify(result.chatResult) : undefined
206
211
  };
207
212
  }
208
213