@voyant-travel/relationships 0.119.2
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/LICENSE +201 -0
- package/README.md +36 -0
- package/dist/action-ledger-capabilities.d.ts +20 -0
- package/dist/action-ledger-capabilities.d.ts.map +1 -0
- package/dist/action-ledger-capabilities.js +16 -0
- package/dist/events.d.ts +23 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +9 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/route-runtime.d.ts +21 -0
- package/dist/route-runtime.d.ts.map +1 -0
- package/dist/route-runtime.js +28 -0
- package/dist/routes/accounts.d.ts +1460 -0
- package/dist/routes/accounts.d.ts.map +1 -0
- package/dist/routes/accounts.js +274 -0
- package/dist/routes/activities.d.ts +299 -0
- package/dist/routes/activities.d.ts.map +1 -0
- package/dist/routes/activities.js +64 -0
- package/dist/routes/custom-fields.d.ts +256 -0
- package/dist/routes/custom-fields.d.ts.map +1 -0
- package/dist/routes/custom-fields.js +47 -0
- package/dist/routes/customer-signals.d.ts +281 -0
- package/dist/routes/customer-signals.d.ts.map +1 -0
- package/dist/routes/customer-signals.js +45 -0
- package/dist/routes/index.d.ts +2945 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +14 -0
- package/dist/routes/person-documents.d.ts +519 -0
- package/dist/routes/person-documents.d.ts.map +1 -0
- package/dist/routes/person-documents.js +240 -0
- package/dist/routes/person-relationships.d.ts +189 -0
- package/dist/routes/person-relationships.d.ts.map +1 -0
- package/dist/routes/person-relationships.js +36 -0
- package/dist/schema-accounts.d.ts +2099 -0
- package/dist/schema-accounts.d.ts.map +1 -0
- package/dist/schema-accounts.js +312 -0
- package/dist/schema-activities.d.ts +821 -0
- package/dist/schema-activities.d.ts.map +1 -0
- package/dist/schema-activities.js +92 -0
- package/dist/schema-relations.d.ts +47 -0
- package/dist/schema-relations.d.ts.map +1 -0
- package/dist/schema-relations.js +70 -0
- package/dist/schema-shared.d.ts +10 -0
- package/dist/schema-shared.d.ts.map +1 -0
- package/dist/schema-shared.js +36 -0
- package/dist/schema-signals.d.ts +324 -0
- package/dist/schema-signals.d.ts.map +1 -0
- package/dist/schema-signals.js +80 -0
- package/dist/schema.d.ts +6 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +5 -0
- package/dist/service/accounts-merge.d.ts +63 -0
- package/dist/service/accounts-merge.d.ts.map +1 -0
- package/dist/service/accounts-merge.js +382 -0
- package/dist/service/accounts-organizations.d.ts +97 -0
- package/dist/service/accounts-organizations.d.ts.map +1 -0
- package/dist/service/accounts-organizations.js +70 -0
- package/dist/service/accounts-people.d.ts +1315 -0
- package/dist/service/accounts-people.d.ts.map +1 -0
- package/dist/service/accounts-people.js +409 -0
- package/dist/service/accounts-resolve.d.ts +76 -0
- package/dist/service/accounts-resolve.d.ts.map +1 -0
- package/dist/service/accounts-resolve.js +103 -0
- package/dist/service/accounts-shared.d.ts +68 -0
- package/dist/service/accounts-shared.d.ts.map +1 -0
- package/dist/service/accounts-shared.js +149 -0
- package/dist/service/accounts.d.ts +1465 -0
- package/dist/service/accounts.d.ts.map +1 -0
- package/dist/service/accounts.js +13 -0
- package/dist/service/activities.d.ts +486 -0
- package/dist/service/activities.d.ts.map +1 -0
- package/dist/service/activities.js +114 -0
- package/dist/service/custom-fields.d.ts +118 -0
- package/dist/service/custom-fields.d.ts.map +1 -0
- package/dist/service/custom-fields.js +88 -0
- package/dist/service/customer-signals.d.ts +733 -0
- package/dist/service/customer-signals.d.ts.map +1 -0
- package/dist/service/customer-signals.js +112 -0
- package/dist/service/helpers.d.ts +22 -0
- package/dist/service/helpers.d.ts.map +1 -0
- package/dist/service/helpers.js +39 -0
- package/dist/service/index.d.ts +4434 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +17 -0
- package/dist/service/person-documents.d.ts +1201 -0
- package/dist/service/person-documents.d.ts.map +1 -0
- package/dist/service/person-documents.js +240 -0
- package/dist/service/person-relationships.d.ts +502 -0
- package/dist/service/person-relationships.d.ts.map +1 -0
- package/dist/service/person-relationships.js +121 -0
- package/dist/validation.d.ts +3 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { customFieldDefinitionListQuerySchema, customFieldValueListQuerySchema, insertCustomFieldDefinitionSchema, updateCustomFieldDefinitionSchema, upsertCustomFieldValueSchema } from "../validation.js";
|
|
4
|
+
type CustomFieldDefinitionListQuery = z.infer<typeof customFieldDefinitionListQuerySchema>;
|
|
5
|
+
type CreateCustomFieldDefinitionInput = z.infer<typeof insertCustomFieldDefinitionSchema>;
|
|
6
|
+
type UpdateCustomFieldDefinitionInput = z.infer<typeof updateCustomFieldDefinitionSchema>;
|
|
7
|
+
type CustomFieldValueListQuery = z.infer<typeof customFieldValueListQuerySchema>;
|
|
8
|
+
type UpsertCustomFieldValueInput = z.infer<typeof upsertCustomFieldValueSchema>;
|
|
9
|
+
export declare const customFieldsService: {
|
|
10
|
+
listCustomFieldDefinitions(db: PostgresJsDatabase, query: CustomFieldDefinitionListQuery): Promise<{
|
|
11
|
+
data: {
|
|
12
|
+
id: string;
|
|
13
|
+
entityType: "organization" | "person" | "quote" | "activity";
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
fieldType: "boolean" | "json" | "date" | "text" | "enum" | "set" | "phone" | "varchar" | "double" | "monetary" | "address";
|
|
17
|
+
isRequired: boolean;
|
|
18
|
+
isSearchable: boolean;
|
|
19
|
+
options: {
|
|
20
|
+
label: string;
|
|
21
|
+
value: string;
|
|
22
|
+
}[] | null;
|
|
23
|
+
createdAt: Date;
|
|
24
|
+
updatedAt: Date;
|
|
25
|
+
}[];
|
|
26
|
+
total: number;
|
|
27
|
+
limit: number;
|
|
28
|
+
offset: number;
|
|
29
|
+
}>;
|
|
30
|
+
getCustomFieldDefinitionById(db: PostgresJsDatabase, id: string): Promise<{
|
|
31
|
+
id: string;
|
|
32
|
+
entityType: "organization" | "person" | "quote" | "activity";
|
|
33
|
+
key: string;
|
|
34
|
+
label: string;
|
|
35
|
+
fieldType: "boolean" | "json" | "date" | "text" | "enum" | "set" | "phone" | "varchar" | "double" | "monetary" | "address";
|
|
36
|
+
isRequired: boolean;
|
|
37
|
+
isSearchable: boolean;
|
|
38
|
+
options: {
|
|
39
|
+
label: string;
|
|
40
|
+
value: string;
|
|
41
|
+
}[] | null;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
updatedAt: Date;
|
|
44
|
+
} | null>;
|
|
45
|
+
createCustomFieldDefinition(db: PostgresJsDatabase, data: CreateCustomFieldDefinitionInput): Promise<{
|
|
46
|
+
options: {
|
|
47
|
+
label: string;
|
|
48
|
+
value: string;
|
|
49
|
+
}[] | null;
|
|
50
|
+
id: string;
|
|
51
|
+
createdAt: Date;
|
|
52
|
+
key: string;
|
|
53
|
+
updatedAt: Date;
|
|
54
|
+
entityType: "organization" | "person" | "quote" | "activity";
|
|
55
|
+
label: string;
|
|
56
|
+
fieldType: "boolean" | "json" | "date" | "text" | "enum" | "set" | "phone" | "varchar" | "double" | "monetary" | "address";
|
|
57
|
+
isRequired: boolean;
|
|
58
|
+
isSearchable: boolean;
|
|
59
|
+
} | undefined>;
|
|
60
|
+
updateCustomFieldDefinition(db: PostgresJsDatabase, id: string, data: UpdateCustomFieldDefinitionInput): Promise<{
|
|
61
|
+
id: string;
|
|
62
|
+
entityType: "organization" | "person" | "quote" | "activity";
|
|
63
|
+
key: string;
|
|
64
|
+
label: string;
|
|
65
|
+
fieldType: "boolean" | "json" | "date" | "text" | "enum" | "set" | "phone" | "varchar" | "double" | "monetary" | "address";
|
|
66
|
+
isRequired: boolean;
|
|
67
|
+
isSearchable: boolean;
|
|
68
|
+
options: {
|
|
69
|
+
label: string;
|
|
70
|
+
value: string;
|
|
71
|
+
}[] | null;
|
|
72
|
+
createdAt: Date;
|
|
73
|
+
updatedAt: Date;
|
|
74
|
+
} | null>;
|
|
75
|
+
deleteCustomFieldDefinition(db: PostgresJsDatabase, id: string): Promise<{
|
|
76
|
+
id: string;
|
|
77
|
+
} | null>;
|
|
78
|
+
listCustomFieldValues(db: PostgresJsDatabase, query: CustomFieldValueListQuery): Promise<{
|
|
79
|
+
data: {
|
|
80
|
+
id: string;
|
|
81
|
+
definitionId: string;
|
|
82
|
+
entityType: "organization" | "person" | "quote" | "activity";
|
|
83
|
+
entityId: string;
|
|
84
|
+
textValue: string | null;
|
|
85
|
+
numberValue: number | null;
|
|
86
|
+
dateValue: string | null;
|
|
87
|
+
booleanValue: boolean | null;
|
|
88
|
+
monetaryValueCents: number | null;
|
|
89
|
+
currencyCode: string | null;
|
|
90
|
+
jsonValue: string[] | Record<string, unknown> | null;
|
|
91
|
+
createdAt: Date;
|
|
92
|
+
updatedAt: Date;
|
|
93
|
+
}[];
|
|
94
|
+
total: number;
|
|
95
|
+
limit: number;
|
|
96
|
+
offset: number;
|
|
97
|
+
}>;
|
|
98
|
+
upsertCustomFieldValue(db: PostgresJsDatabase, definitionId: string, data: UpsertCustomFieldValueInput): Promise<{
|
|
99
|
+
id: string;
|
|
100
|
+
createdAt: Date;
|
|
101
|
+
updatedAt: Date;
|
|
102
|
+
entityType: "organization" | "person" | "quote" | "activity";
|
|
103
|
+
entityId: string;
|
|
104
|
+
definitionId: string;
|
|
105
|
+
textValue: string | null;
|
|
106
|
+
numberValue: number | null;
|
|
107
|
+
dateValue: string | null;
|
|
108
|
+
booleanValue: boolean | null;
|
|
109
|
+
monetaryValueCents: number | null;
|
|
110
|
+
currencyCode: string | null;
|
|
111
|
+
jsonValue: string[] | Record<string, unknown> | null;
|
|
112
|
+
} | undefined>;
|
|
113
|
+
deleteCustomFieldValue(db: PostgresJsDatabase, id: string): Promise<{
|
|
114
|
+
id: string;
|
|
115
|
+
} | null>;
|
|
116
|
+
};
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=custom-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/service/custom-fields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAG5B,OAAO,KAAK,EACV,oCAAoC,EACpC,+BAA+B,EAC/B,iCAAiC,EACjC,iCAAiC,EACjC,4BAA4B,EAC7B,MAAM,kBAAkB,CAAA;AAGzB,KAAK,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAA;AAC1F,KAAK,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AACzF,KAAK,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AACzF,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAChF,KAAK,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAE/E,eAAO,MAAM,mBAAmB;mCACO,kBAAkB,SAAS,8BAA8B;;;;;;;;;;;;;;;;;;;;qCAkBvD,kBAAkB,MAAM,MAAM;;;;;;;;;;;;;;;oCAU/D,kBAAkB,QAChB,gCAAgC;;;;;;;;;;;;;;;oCAOlC,kBAAkB,MAClB,MAAM,QACJ,gCAAgC;;;;;;;;;;;;;;;oCAUF,kBAAkB,MAAM,MAAM;;;8BAQpC,kBAAkB,SAAS,yBAAyB;;;;;;;;;;;;;;;;;;;;+BAsB9E,kBAAkB,gBACR,MAAM,QACd,2BAA2B;;;;;;;;;;;;;;;+BA8BF,kBAAkB,MAAM,MAAM;;;CAOhE,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { and, desc, eq, sql } from "drizzle-orm";
|
|
2
|
+
import { customFieldDefinitions, customFieldValues } from "../schema.js";
|
|
3
|
+
import { paginate } from "./helpers.js";
|
|
4
|
+
export const customFieldsService = {
|
|
5
|
+
async listCustomFieldDefinitions(db, query) {
|
|
6
|
+
const where = query.entityType
|
|
7
|
+
? eq(customFieldDefinitions.entityType, query.entityType)
|
|
8
|
+
: undefined;
|
|
9
|
+
return paginate(db
|
|
10
|
+
.select()
|
|
11
|
+
.from(customFieldDefinitions)
|
|
12
|
+
.where(where)
|
|
13
|
+
.limit(query.limit)
|
|
14
|
+
.offset(query.offset)
|
|
15
|
+
.orderBy(customFieldDefinitions.entityType, customFieldDefinitions.label), db.select({ count: sql `count(*)::int` }).from(customFieldDefinitions).where(where), query.limit, query.offset);
|
|
16
|
+
},
|
|
17
|
+
async getCustomFieldDefinitionById(db, id) {
|
|
18
|
+
const [row] = await db
|
|
19
|
+
.select()
|
|
20
|
+
.from(customFieldDefinitions)
|
|
21
|
+
.where(eq(customFieldDefinitions.id, id))
|
|
22
|
+
.limit(1);
|
|
23
|
+
return row ?? null;
|
|
24
|
+
},
|
|
25
|
+
async createCustomFieldDefinition(db, data) {
|
|
26
|
+
const [row] = await db.insert(customFieldDefinitions).values(data).returning();
|
|
27
|
+
return row;
|
|
28
|
+
},
|
|
29
|
+
async updateCustomFieldDefinition(db, id, data) {
|
|
30
|
+
const [row] = await db
|
|
31
|
+
.update(customFieldDefinitions)
|
|
32
|
+
.set({ ...data, updatedAt: new Date() })
|
|
33
|
+
.where(eq(customFieldDefinitions.id, id))
|
|
34
|
+
.returning();
|
|
35
|
+
return row ?? null;
|
|
36
|
+
},
|
|
37
|
+
async deleteCustomFieldDefinition(db, id) {
|
|
38
|
+
const [row] = await db
|
|
39
|
+
.delete(customFieldDefinitions)
|
|
40
|
+
.where(eq(customFieldDefinitions.id, id))
|
|
41
|
+
.returning({ id: customFieldDefinitions.id });
|
|
42
|
+
return row ?? null;
|
|
43
|
+
},
|
|
44
|
+
async listCustomFieldValues(db, query) {
|
|
45
|
+
const conditions = [];
|
|
46
|
+
if (query.entityType)
|
|
47
|
+
conditions.push(eq(customFieldValues.entityType, query.entityType));
|
|
48
|
+
if (query.entityId)
|
|
49
|
+
conditions.push(eq(customFieldValues.entityId, query.entityId));
|
|
50
|
+
if (query.definitionId)
|
|
51
|
+
conditions.push(eq(customFieldValues.definitionId, query.definitionId));
|
|
52
|
+
const where = conditions.length ? and(...conditions) : undefined;
|
|
53
|
+
return paginate(db
|
|
54
|
+
.select()
|
|
55
|
+
.from(customFieldValues)
|
|
56
|
+
.where(where)
|
|
57
|
+
.limit(query.limit)
|
|
58
|
+
.offset(query.offset)
|
|
59
|
+
.orderBy(desc(customFieldValues.updatedAt)), db.select({ count: sql `count(*)::int` }).from(customFieldValues).where(where), query.limit, query.offset);
|
|
60
|
+
},
|
|
61
|
+
async upsertCustomFieldValue(db, definitionId, data) {
|
|
62
|
+
const [existing] = await db
|
|
63
|
+
.select()
|
|
64
|
+
.from(customFieldValues)
|
|
65
|
+
.where(and(eq(customFieldValues.definitionId, definitionId), eq(customFieldValues.entityType, data.entityType), eq(customFieldValues.entityId, data.entityId)))
|
|
66
|
+
.limit(1);
|
|
67
|
+
if (existing) {
|
|
68
|
+
const [row] = await db
|
|
69
|
+
.update(customFieldValues)
|
|
70
|
+
.set({ ...data, definitionId, updatedAt: new Date() })
|
|
71
|
+
.where(eq(customFieldValues.id, existing.id))
|
|
72
|
+
.returning();
|
|
73
|
+
return row;
|
|
74
|
+
}
|
|
75
|
+
const [row] = await db
|
|
76
|
+
.insert(customFieldValues)
|
|
77
|
+
.values({ ...data, definitionId })
|
|
78
|
+
.returning();
|
|
79
|
+
return row;
|
|
80
|
+
},
|
|
81
|
+
async deleteCustomFieldValue(db, id) {
|
|
82
|
+
const [row] = await db
|
|
83
|
+
.delete(customFieldValues)
|
|
84
|
+
.where(eq(customFieldValues.id, id))
|
|
85
|
+
.returning({ id: customFieldValues.id });
|
|
86
|
+
return row ?? null;
|
|
87
|
+
},
|
|
88
|
+
};
|