@voyant-travel/quotes 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 +39 -0
- package/dist/booking-extension.d.ts +123 -0
- package/dist/booking-extension.d.ts.map +1 -0
- package/dist/booking-extension.js +87 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/routes/index.d.ts +1410 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +8 -0
- package/dist/routes/pipelines.d.ts +292 -0
- package/dist/routes/pipelines.d.ts.map +1 -0
- package/dist/routes/pipelines.js +59 -0
- package/dist/routes/quote-versions.d.ts +746 -0
- package/dist/routes/quote-versions.d.ts.map +1 -0
- package/dist/routes/quote-versions.js +175 -0
- package/dist/routes/quotes.d.ts +391 -0
- package/dist/routes/quotes.d.ts.map +1 -0
- package/dist/routes/quotes.js +70 -0
- package/dist/schema-relations.d.ts +30 -0
- package/dist/schema-relations.d.ts.map +1 -0
- package/dist/schema-relations.js +49 -0
- package/dist/schema-sales.d.ts +1511 -0
- package/dist/schema-sales.d.ts.map +1 -0
- package/dist/schema-sales.js +164 -0
- package/dist/schema-shared.d.ts +5 -0
- package/dist/schema-shared.d.ts.map +1 -0
- package/dist/schema-shared.js +18 -0
- package/dist/schema.d.ts +5 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +4 -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 +1734 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +11 -0
- package/dist/service/pipelines.d.ts +113 -0
- package/dist/service/pipelines.d.ts.map +1 -0
- package/dist/service/pipelines.js +68 -0
- package/dist/service/quote-versions.d.ts +674 -0
- package/dist/service/quote-versions.d.ts.map +1 -0
- package/dist/service/quote-versions.js +400 -0
- package/dist/service/quotes.d.ts +826 -0
- package/dist/service/quotes.d.ts.map +1 -0
- package/dist/service/quotes.js +110 -0
- package/dist/validation.d.ts +2 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIzB,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACrF,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { pipelinesService } from "./pipelines.js";
|
|
2
|
+
import { quoteVersionsService } from "./quote-versions.js";
|
|
3
|
+
import { quotesService as quoteRecordsService } from "./quotes.js";
|
|
4
|
+
export const quotesService = {
|
|
5
|
+
...pipelinesService,
|
|
6
|
+
...quoteRecordsService,
|
|
7
|
+
...quoteVersionsService,
|
|
8
|
+
};
|
|
9
|
+
export { pipelinesService } from "./pipelines.js";
|
|
10
|
+
export { QuoteVersionConflictError, quoteVersionsService } from "./quote-versions.js";
|
|
11
|
+
export { quotesService as quoteRecordsService } from "./quotes.js";
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
2
|
+
import type { z } from "zod";
|
|
3
|
+
import type { insertPipelineSchema, insertStageSchema, pipelineListQuerySchema, stageListQuerySchema, updatePipelineSchema, updateStageSchema } from "../validation.js";
|
|
4
|
+
type PipelineListQuery = z.infer<typeof pipelineListQuerySchema>;
|
|
5
|
+
type CreatePipelineInput = z.infer<typeof insertPipelineSchema>;
|
|
6
|
+
type UpdatePipelineInput = z.infer<typeof updatePipelineSchema>;
|
|
7
|
+
type StageListQuery = z.infer<typeof stageListQuerySchema>;
|
|
8
|
+
type CreateStageInput = z.infer<typeof insertStageSchema>;
|
|
9
|
+
type UpdateStageInput = z.infer<typeof updateStageSchema>;
|
|
10
|
+
export declare const pipelinesService: {
|
|
11
|
+
listPipelines(db: PostgresJsDatabase, query: PipelineListQuery): Promise<{
|
|
12
|
+
data: {
|
|
13
|
+
id: string;
|
|
14
|
+
entityType: "quote" | "organization" | "person" | "activity";
|
|
15
|
+
name: string;
|
|
16
|
+
isDefault: boolean;
|
|
17
|
+
sortOrder: number;
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
updatedAt: Date;
|
|
20
|
+
}[];
|
|
21
|
+
total: number;
|
|
22
|
+
limit: number;
|
|
23
|
+
offset: number;
|
|
24
|
+
}>;
|
|
25
|
+
getPipelineById(db: PostgresJsDatabase, id: string): Promise<{
|
|
26
|
+
id: string;
|
|
27
|
+
entityType: "quote" | "organization" | "person" | "activity";
|
|
28
|
+
name: string;
|
|
29
|
+
isDefault: boolean;
|
|
30
|
+
sortOrder: number;
|
|
31
|
+
createdAt: Date;
|
|
32
|
+
updatedAt: Date;
|
|
33
|
+
} | null>;
|
|
34
|
+
createPipeline(db: PostgresJsDatabase, data: CreatePipelineInput): Promise<{
|
|
35
|
+
name: string;
|
|
36
|
+
createdAt: Date;
|
|
37
|
+
updatedAt: Date;
|
|
38
|
+
id: string;
|
|
39
|
+
entityType: "quote" | "organization" | "person" | "activity";
|
|
40
|
+
isDefault: boolean;
|
|
41
|
+
sortOrder: number;
|
|
42
|
+
} | undefined>;
|
|
43
|
+
updatePipeline(db: PostgresJsDatabase, id: string, data: UpdatePipelineInput): Promise<{
|
|
44
|
+
id: string;
|
|
45
|
+
entityType: "quote" | "organization" | "person" | "activity";
|
|
46
|
+
name: string;
|
|
47
|
+
isDefault: boolean;
|
|
48
|
+
sortOrder: number;
|
|
49
|
+
createdAt: Date;
|
|
50
|
+
updatedAt: Date;
|
|
51
|
+
} | null>;
|
|
52
|
+
deletePipeline(db: PostgresJsDatabase, id: string): Promise<{
|
|
53
|
+
id: string;
|
|
54
|
+
} | null>;
|
|
55
|
+
listStages(db: PostgresJsDatabase, query: StageListQuery): Promise<{
|
|
56
|
+
data: {
|
|
57
|
+
id: string;
|
|
58
|
+
pipelineId: string;
|
|
59
|
+
name: string;
|
|
60
|
+
sortOrder: number;
|
|
61
|
+
probability: number | null;
|
|
62
|
+
isClosed: boolean;
|
|
63
|
+
isWon: boolean;
|
|
64
|
+
isLost: boolean;
|
|
65
|
+
createdAt: Date;
|
|
66
|
+
updatedAt: Date;
|
|
67
|
+
}[];
|
|
68
|
+
total: number;
|
|
69
|
+
limit: number;
|
|
70
|
+
offset: number;
|
|
71
|
+
}>;
|
|
72
|
+
getStageById(db: PostgresJsDatabase, id: string): Promise<{
|
|
73
|
+
id: string;
|
|
74
|
+
pipelineId: string;
|
|
75
|
+
name: string;
|
|
76
|
+
sortOrder: number;
|
|
77
|
+
probability: number | null;
|
|
78
|
+
isClosed: boolean;
|
|
79
|
+
isWon: boolean;
|
|
80
|
+
isLost: boolean;
|
|
81
|
+
createdAt: Date;
|
|
82
|
+
updatedAt: Date;
|
|
83
|
+
} | null>;
|
|
84
|
+
createStage(db: PostgresJsDatabase, data: CreateStageInput): Promise<{
|
|
85
|
+
name: string;
|
|
86
|
+
createdAt: Date;
|
|
87
|
+
updatedAt: Date;
|
|
88
|
+
id: string;
|
|
89
|
+
sortOrder: number;
|
|
90
|
+
pipelineId: string;
|
|
91
|
+
probability: number | null;
|
|
92
|
+
isClosed: boolean;
|
|
93
|
+
isWon: boolean;
|
|
94
|
+
isLost: boolean;
|
|
95
|
+
} | undefined>;
|
|
96
|
+
updateStage(db: PostgresJsDatabase, id: string, data: UpdateStageInput): Promise<{
|
|
97
|
+
id: string;
|
|
98
|
+
pipelineId: string;
|
|
99
|
+
name: string;
|
|
100
|
+
sortOrder: number;
|
|
101
|
+
probability: number | null;
|
|
102
|
+
isClosed: boolean;
|
|
103
|
+
isWon: boolean;
|
|
104
|
+
isLost: boolean;
|
|
105
|
+
createdAt: Date;
|
|
106
|
+
updatedAt: Date;
|
|
107
|
+
} | null>;
|
|
108
|
+
deleteStage(db: PostgresJsDatabase, id: string): Promise<{
|
|
109
|
+
id: string;
|
|
110
|
+
} | null>;
|
|
111
|
+
};
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=pipelines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../../src/service/pipelines.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,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,kBAAkB,CAAA;AAGzB,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAChE,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAC/D,KAAK,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAC/D,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAC1D,KAAK,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACzD,KAAK,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEzD,eAAO,MAAM,gBAAgB;sBACH,kBAAkB,SAAS,iBAAiB;;;;;;;;;;;;;;wBAgB1C,kBAAkB,MAAM,MAAM;;;;;;;;;uBAK/B,kBAAkB,QAAQ,mBAAmB;;;;;;;;;uBAK7C,kBAAkB,MAAM,MAAM,QAAQ,mBAAmB;;;;;;;;;uBASzD,kBAAkB,MAAM,MAAM;;;mBAQlC,kBAAkB,SAAS,cAAc;;;;;;;;;;;;;;;;;qBAgBvC,kBAAkB,MAAM,MAAM;;;;;;;;;;;;oBAK/B,kBAAkB,QAAQ,gBAAgB;;;;;;;;;;;;oBAK1C,kBAAkB,MAAM,MAAM,QAAQ,gBAAgB;;;;;;;;;;;;oBAStD,kBAAkB,MAAM,MAAM;;;CAIrD,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { eq, sql } from "drizzle-orm";
|
|
2
|
+
import { pipelines, stages } from "../schema.js";
|
|
3
|
+
import { paginate } from "./helpers.js";
|
|
4
|
+
export const pipelinesService = {
|
|
5
|
+
async listPipelines(db, query) {
|
|
6
|
+
const where = query.entityType ? eq(pipelines.entityType, query.entityType) : undefined;
|
|
7
|
+
return paginate(db
|
|
8
|
+
.select()
|
|
9
|
+
.from(pipelines)
|
|
10
|
+
.where(where)
|
|
11
|
+
.limit(query.limit)
|
|
12
|
+
.offset(query.offset)
|
|
13
|
+
.orderBy(pipelines.sortOrder, pipelines.createdAt), db.select({ count: sql `count(*)::int` }).from(pipelines).where(where), query.limit, query.offset);
|
|
14
|
+
},
|
|
15
|
+
async getPipelineById(db, id) {
|
|
16
|
+
const [row] = await db.select().from(pipelines).where(eq(pipelines.id, id)).limit(1);
|
|
17
|
+
return row ?? null;
|
|
18
|
+
},
|
|
19
|
+
async createPipeline(db, data) {
|
|
20
|
+
const [row] = await db.insert(pipelines).values(data).returning();
|
|
21
|
+
return row;
|
|
22
|
+
},
|
|
23
|
+
async updatePipeline(db, id, data) {
|
|
24
|
+
const [row] = await db
|
|
25
|
+
.update(pipelines)
|
|
26
|
+
.set({ ...data, updatedAt: new Date() })
|
|
27
|
+
.where(eq(pipelines.id, id))
|
|
28
|
+
.returning();
|
|
29
|
+
return row ?? null;
|
|
30
|
+
},
|
|
31
|
+
async deletePipeline(db, id) {
|
|
32
|
+
const [row] = await db
|
|
33
|
+
.delete(pipelines)
|
|
34
|
+
.where(eq(pipelines.id, id))
|
|
35
|
+
.returning({ id: pipelines.id });
|
|
36
|
+
return row ?? null;
|
|
37
|
+
},
|
|
38
|
+
async listStages(db, query) {
|
|
39
|
+
const where = query.pipelineId ? eq(stages.pipelineId, query.pipelineId) : undefined;
|
|
40
|
+
return paginate(db
|
|
41
|
+
.select()
|
|
42
|
+
.from(stages)
|
|
43
|
+
.where(where)
|
|
44
|
+
.limit(query.limit)
|
|
45
|
+
.offset(query.offset)
|
|
46
|
+
.orderBy(stages.sortOrder, stages.createdAt), db.select({ count: sql `count(*)::int` }).from(stages).where(where), query.limit, query.offset);
|
|
47
|
+
},
|
|
48
|
+
async getStageById(db, id) {
|
|
49
|
+
const [row] = await db.select().from(stages).where(eq(stages.id, id)).limit(1);
|
|
50
|
+
return row ?? null;
|
|
51
|
+
},
|
|
52
|
+
async createStage(db, data) {
|
|
53
|
+
const [row] = await db.insert(stages).values(data).returning();
|
|
54
|
+
return row;
|
|
55
|
+
},
|
|
56
|
+
async updateStage(db, id, data) {
|
|
57
|
+
const [row] = await db
|
|
58
|
+
.update(stages)
|
|
59
|
+
.set({ ...data, updatedAt: new Date() })
|
|
60
|
+
.where(eq(stages.id, id))
|
|
61
|
+
.returning();
|
|
62
|
+
return row ?? null;
|
|
63
|
+
},
|
|
64
|
+
async deleteStage(db, id) {
|
|
65
|
+
const [row] = await db.delete(stages).where(eq(stages.id, id)).returning({ id: stages.id });
|
|
66
|
+
return row ?? null;
|
|
67
|
+
},
|
|
68
|
+
};
|