@honestdigital/vehicle-service-types 1.0.0 → 1.0.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.
Potentially problematic release.
This version of @honestdigital/vehicle-service-types might be problematic. Click here for more details.
- package/README.md +0 -1
- package/dist/config/database.d.ts +2 -6
- package/dist/config/database.d.ts.map +1 -1
- package/dist/config/redis.d.ts.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/db/index.d.ts +1 -5
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/schema.d.ts +290 -31
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/index.worker.d.ts +4 -0
- package/dist/index.worker.d.ts.map +1 -1
- package/dist/repositories/syncHistory.d.ts +1 -1
- package/dist/repositories/syncHistory.d.ts.map +1 -1
- package/dist/repositories/vehicleConfig.d.ts +2 -1
- package/dist/repositories/vehicleConfig.d.ts.map +1 -1
- package/dist/repositories/vehicleInventory.d.ts +13 -12
- package/dist/repositories/vehicleInventory.d.ts.map +1 -1
- package/dist/repositories/vehicleQuery.d.ts +16 -22
- package/dist/repositories/vehicleQuery.d.ts.map +1 -1
- package/dist/routers/index.d.ts +100 -51
- package/dist/routers/index.d.ts.map +1 -1
- package/dist/routers/inventory.d.ts +108 -51
- package/dist/routers/inventory.d.ts.map +1 -1
- package/dist/routers/sync.d.ts +1 -1
- package/dist/routers/sync.d.ts.map +1 -1
- package/dist/schemas/vehicle.schema.d.ts +662 -0
- package/dist/schemas/vehicle.schema.d.ts.map +1 -0
- package/dist/scripts/importUsedVehicles.d.ts +0 -7
- package/dist/scripts/importUsedVehicles.d.ts.map +1 -1
- package/dist/services/SearchQueryParser.d.ts +23 -0
- package/dist/services/SearchQueryParser.d.ts.map +1 -0
- package/dist/services/VehicleSearchService.d.ts +40 -0
- package/dist/services/VehicleSearchService.d.ts.map +1 -0
- package/dist/services/chromeImage.d.ts +9 -19
- package/dist/services/chromeImage.d.ts.map +1 -1
- package/dist/services/mmt.d.ts +0 -9
- package/dist/services/mmt.d.ts.map +1 -1
- package/dist/services/pricing.d.ts.map +1 -1
- package/dist/services/scheduler.d.ts +0 -38
- package/dist/services/scheduler.d.ts.map +1 -1
- package/dist/services/vehicleSqlBuilder.d.ts +43 -2
- package/dist/services/vehicleSqlBuilder.d.ts.map +1 -1
- package/dist/services/vehicleSync.d.ts.map +1 -1
- package/dist/services/vehicleTransformService.d.ts +33 -4
- package/dist/services/vehicleTransformService.d.ts.map +1 -1
- package/dist/trpc.d.ts +2 -2
- package/dist/trpc.d.ts.map +1 -1
- package/dist/types/filters.d.ts.map +1 -1
- package/dist/types/search.d.ts +442 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/vehicle.d.ts +19 -115
- package/dist/types/vehicle.d.ts.map +1 -1
- package/dist/types.d.ts +4 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities/cache.d.ts +4 -0
- package/dist/utilities/cache.d.ts.map +1 -1
- package/package.json +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vehicleInventory.d.ts","sourceRoot":"","sources":["../../src/repositories/vehicleInventory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vehicleInventory.d.ts","sourceRoot":"","sources":["../../src/repositories/vehicleInventory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACV,kBAAkB,IAAI,sBAAsB,EAC5C,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAO9C,KAAK,WAAW,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,OAAO,CAAA;QACpB,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,UAAU,EAAE,UAAU,EAAE,CAAA;IACxB,UAAU,EAAE,UAAU,EAAE,CAAA;CACzB;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAEhD,OAAO;WAMO,WAAW,IAAI,0BAA0B;IAKvD;;OAEG;YACW,kBAAkB;IAehC;;OAEG;IACU,eAAe,CAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC;QACT,KAAK,EAAE,UAAU,CAAA;QACjB,OAAO,EAAE,UAAU,CAAA;KACpB,CAAC;IA6CF;;;OAGG;IACU,SAAS,CACpB,OAAO,GAAE,sBAA2B,EACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,WAAW,CAAC;IA0BvB;;OAEG;YACW,0BAA0B;IAmBxC;;OAEG;YACW,cAAc;IA+E5B;;;OAGG;IACU,YAAY,CACvB,OAAO,GAAE,sBAAsB,GAAG,mBAAwB,EAC1D,KAAK,SAAsC,EAC3C,MAAM,CAAC,EAAE,UAAU,EACnB,IAAI,SAAqC,EACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,YAAY,UAAQ,EACpB,GAAG,CAAC,EAAE,WAAW,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAmE7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;YACW,wBAAwB;IA+DtC;;;OAGG;IACU,+BAA+B,CAC1C,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAC5C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC;QAAE,UAAU,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAgBnE"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Vehicle Query Repository - Optimized CRUD operations with Drizzle ORM
|
|
3
|
+
* Converted from native pg to Drizzle ORM - using Pool for complex raw SQL queries
|
|
4
|
+
*/
|
|
5
|
+
import type { HierarchicalFilters, SortOption } from '@/types/filters';
|
|
6
|
+
import type { Vehicle } from '@/types/vehicle';
|
|
3
7
|
type EnvBindings = {
|
|
4
8
|
POSTGRES_URL?: string;
|
|
5
9
|
REDIS_URL?: string;
|
|
@@ -29,28 +33,17 @@ export declare class VehicleQueryRepository {
|
|
|
29
33
|
* Validates tenant ID requirement
|
|
30
34
|
*/
|
|
31
35
|
private validateTenantId;
|
|
32
|
-
/**
|
|
33
|
-
* Gets a vehicle by ID with tenant isolation
|
|
34
|
-
* SECURITY: MUST filter by tenant to prevent cross-tenant access
|
|
35
|
-
*/
|
|
36
|
-
getVehicle(id: string, tenantId?: number | null, env?: EnvBindings): Promise<VehicleWithPricing>;
|
|
37
36
|
/**
|
|
38
37
|
* Gets a vehicle by VIN with tenant isolation
|
|
39
38
|
* SECURITY: MUST filter by tenant to prevent cross-tenant access
|
|
40
39
|
*/
|
|
41
|
-
getVehicleByVin(vin: string, tenantId?: number | null, env?: EnvBindings): Promise<
|
|
40
|
+
getVehicleByVin(vin: string, tenantId?: number | null, env?: EnvBindings): Promise<Vehicle>;
|
|
42
41
|
/**
|
|
43
42
|
* Gets multiple vehicles by VINs with tenant isolation
|
|
44
43
|
* Used for recently viewed vehicles functionality
|
|
45
44
|
* SECURITY: MUST filter by tenant
|
|
46
45
|
*/
|
|
47
|
-
getVehiclesByVins(vins: string[], tenantId?: number | null, env?: EnvBindings): Promise<
|
|
48
|
-
/**
|
|
49
|
-
* Gets all vehicles with optional tenant filtering
|
|
50
|
-
*/
|
|
51
|
-
getAllVehicles(tenantId?: number | null, env?: EnvBindings): Promise<{
|
|
52
|
-
docs: VehicleWithPricing[];
|
|
53
|
-
}>;
|
|
46
|
+
getVehiclesByVins(vins: string[], tenantId?: number | null, env?: EnvBindings): Promise<Vehicle[]>;
|
|
54
47
|
/**
|
|
55
48
|
* Optimized SQL query builder with CTE pattern
|
|
56
49
|
*/
|
|
@@ -60,14 +53,15 @@ export declare class VehicleQueryRepository {
|
|
|
60
53
|
*/
|
|
61
54
|
private processQueryResult;
|
|
62
55
|
/**
|
|
63
|
-
*
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
* Optimized SQL query for vehicles with hierarchical MMT filters
|
|
68
|
-
* @param groupByModel - When true, returns only cheapest vehicle per model. When false, returns all vehicles.
|
|
56
|
+
* Query vehicles with hierarchical MMT filters AND search conditions
|
|
57
|
+
* Combines hierarchical filtering with text search
|
|
58
|
+
* @param searchConditions - Search SQL fragments to add to otherConditions
|
|
59
|
+
* @param groupByModel - When true, returns only cheapest vehicle per model
|
|
69
60
|
*/
|
|
70
|
-
|
|
61
|
+
getVehiclesWithHierarchicalAndSearchSQL(filters: HierarchicalFilters, searchConditions: Array<{
|
|
62
|
+
text: string;
|
|
63
|
+
values: unknown[];
|
|
64
|
+
}>, limit: number, sortBy: SortOption | undefined, page: number, tenantId?: number | null, groupByModel?: boolean, env?: EnvBindings): Promise<VehicleSearchResult>;
|
|
71
65
|
}
|
|
72
66
|
export {};
|
|
73
67
|
//# sourceMappingURL=vehicleQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vehicleQuery.d.ts","sourceRoot":"","sources":["../../src/repositories/vehicleQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vehicleQuery.d.ts","sourceRoot":"","sources":["../../src/repositories/vehicleQuery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAK9C,KAAK,WAAW,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,OAAO,CAAA;QACpB,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;CACF;AAID,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAE1D,OAAO;WAKO,WAAW,IAAI,sBAAsB;IAKnD;;OAEG;YACW,wBAAwB;IA4BtC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;OAGG;IACU,eAAe,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,OAAO,CAAC;IA6BnB;;;;OAIG;IACU,iBAAiB,CAC5B,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,OAAO,EAAE,CAAC;IAmCrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0G3B;;OAEG;YACW,kBAAkB;IAoChC;;;;;OAKG;IACU,uCAAuC,CAClD,OAAO,EAAE,mBAAmB,EAC5B,gBAAgB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,EAC5D,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,YAAY,UAAQ,EACpB,GAAG,CAAC,EAAE,WAAW,GAChB,OAAO,CAAC,mBAAmB,CAAC;CA0BhC"}
|
package/dist/routers/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
16
16
|
message: string;
|
|
17
17
|
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
18
18
|
};
|
|
19
|
-
transformer:
|
|
19
|
+
transformer: true;
|
|
20
20
|
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
21
21
|
inventory: import("@trpc/server").TRPCBuiltRouter<{
|
|
22
22
|
ctx: import("../context").TRPCContext;
|
|
@@ -32,79 +32,80 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
32
32
|
message: string;
|
|
33
33
|
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
34
34
|
};
|
|
35
|
-
transformer:
|
|
35
|
+
transformer: true;
|
|
36
36
|
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
37
37
|
getFacets: import("@trpc/server").TRPCQueryProcedure<{
|
|
38
38
|
input: {
|
|
39
|
+
brand?: string | string[] | undefined;
|
|
40
|
+
model?: string | string[] | undefined;
|
|
39
41
|
trim?: string | string[] | undefined;
|
|
40
|
-
fuelType?: string | string[] | undefined;
|
|
41
|
-
bodyStyle?: string | string[] | undefined;
|
|
42
|
-
exteriorColor?: string | string[] | undefined;
|
|
43
|
-
interiorColor?: string | string[] | undefined;
|
|
44
42
|
year?: string | string[] | undefined;
|
|
45
43
|
status?: string | string[] | undefined;
|
|
46
|
-
location?: string | string[] | undefined;
|
|
47
|
-
drivetrain?: string | string[] | undefined;
|
|
48
|
-
doors?: string | string[] | undefined;
|
|
49
44
|
price?: {
|
|
50
|
-
min: string;
|
|
51
45
|
max: string;
|
|
46
|
+
min: string;
|
|
52
47
|
} | undefined;
|
|
53
48
|
mileage?: {
|
|
54
|
-
min: string;
|
|
55
49
|
max: string;
|
|
50
|
+
min: string;
|
|
56
51
|
} | undefined;
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
location?: string | string[] | undefined;
|
|
53
|
+
fuelType?: string | string[] | undefined;
|
|
54
|
+
bodyStyle?: string | string[] | undefined;
|
|
55
|
+
exteriorColor?: string | string[] | undefined;
|
|
56
|
+
interiorColor?: string | string[] | undefined;
|
|
57
|
+
drivetrain?: string | string[] | undefined;
|
|
58
|
+
doors?: string | string[] | undefined;
|
|
59
59
|
} | undefined;
|
|
60
60
|
output: import("../types").FilterState;
|
|
61
61
|
meta: object;
|
|
62
62
|
}>;
|
|
63
63
|
getMakeModelHierarchy: import("@trpc/server").TRPCQueryProcedure<{
|
|
64
64
|
input: void;
|
|
65
|
-
output: import("../
|
|
65
|
+
output: import("../types").ConsolidatedMMT[];
|
|
66
66
|
meta: object;
|
|
67
67
|
}>;
|
|
68
68
|
getVehicle: import("@trpc/server").TRPCQueryProcedure<{
|
|
69
69
|
input: string;
|
|
70
|
-
output: import("../types").
|
|
70
|
+
output: import("../types").Vehicle;
|
|
71
71
|
meta: object;
|
|
72
72
|
}>;
|
|
73
73
|
getInventory: import("@trpc/server").TRPCQueryProcedure<{
|
|
74
74
|
input: {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
name: string;
|
|
79
|
-
trims: string[];
|
|
80
|
-
}[];
|
|
81
|
-
}[] | undefined;
|
|
82
|
-
filters?: {
|
|
75
|
+
filters: {
|
|
76
|
+
brand?: string | string[] | undefined;
|
|
77
|
+
model?: string | string[] | undefined;
|
|
83
78
|
trim?: string | string[] | undefined;
|
|
84
|
-
fuelType?: string | string[] | undefined;
|
|
85
|
-
bodyStyle?: string | string[] | undefined;
|
|
86
|
-
exteriorColor?: string | string[] | undefined;
|
|
87
|
-
interiorColor?: string | string[] | undefined;
|
|
88
79
|
year?: string | string[] | undefined;
|
|
89
80
|
status?: string | string[] | undefined;
|
|
90
|
-
location?: string | string[] | undefined;
|
|
91
|
-
drivetrain?: string | string[] | undefined;
|
|
92
|
-
doors?: string | string[] | undefined;
|
|
93
81
|
price?: {
|
|
94
|
-
min: string;
|
|
95
82
|
max: string;
|
|
83
|
+
min: string;
|
|
96
84
|
} | undefined;
|
|
97
85
|
mileage?: {
|
|
98
|
-
min: string;
|
|
99
86
|
max: string;
|
|
87
|
+
min: string;
|
|
100
88
|
} | undefined;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
89
|
+
location?: string | string[] | undefined;
|
|
90
|
+
fuelType?: string | string[] | undefined;
|
|
91
|
+
bodyStyle?: string | string[] | undefined;
|
|
92
|
+
exteriorColor?: string | string[] | undefined;
|
|
93
|
+
interiorColor?: string | string[] | undefined;
|
|
94
|
+
drivetrain?: string | string[] | undefined;
|
|
95
|
+
doors?: string | string[] | undefined;
|
|
96
|
+
};
|
|
97
|
+
selectedMakeModelTrims?: {
|
|
98
|
+
make: string;
|
|
99
|
+
models: {
|
|
100
|
+
name: string;
|
|
101
|
+
trims: string[];
|
|
102
|
+
}[];
|
|
103
|
+
}[] | undefined;
|
|
104
104
|
limit?: number | undefined;
|
|
105
105
|
sortBy?: "year_desc" | "year_asc" | "price_desc" | "price_asc" | "mileage_desc" | "mileage_asc" | undefined;
|
|
106
106
|
page?: number | undefined;
|
|
107
107
|
groupByModel?: boolean | undefined;
|
|
108
|
+
searchQuery?: string | undefined;
|
|
108
109
|
};
|
|
109
110
|
output: {
|
|
110
111
|
filters: {
|
|
@@ -120,7 +121,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
120
121
|
price?: import("../types").RangeValue;
|
|
121
122
|
mileage?: import("../types").RangeValue;
|
|
122
123
|
};
|
|
123
|
-
vehicles: import("../types").
|
|
124
|
+
vehicles: import("../types").Vehicle[];
|
|
124
125
|
pagination: {
|
|
125
126
|
totalDocs: number;
|
|
126
127
|
page: number;
|
|
@@ -140,14 +141,6 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
140
141
|
};
|
|
141
142
|
meta: object;
|
|
142
143
|
}>;
|
|
143
|
-
getRepresentativeVehicle: import("@trpc/server").TRPCQueryProcedure<{
|
|
144
|
-
input: {
|
|
145
|
-
brand: string;
|
|
146
|
-
model: string;
|
|
147
|
-
};
|
|
148
|
-
output: import("../types").VehicleWithPricing;
|
|
149
|
-
meta: object;
|
|
150
|
-
}>;
|
|
151
144
|
getAvailableColorsForTrim: import("@trpc/server").TRPCQueryProcedure<{
|
|
152
145
|
input: {
|
|
153
146
|
brand: string;
|
|
@@ -159,15 +152,15 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
159
152
|
}>;
|
|
160
153
|
getVehicleByConfiguration: import("@trpc/server").TRPCQueryProcedure<{
|
|
161
154
|
input: {
|
|
162
|
-
trim: string | null;
|
|
163
155
|
brand: string;
|
|
164
156
|
model: string;
|
|
157
|
+
trim: string | null;
|
|
165
158
|
exteriorColorCode: string | null;
|
|
166
159
|
interiorColorCode: string | null;
|
|
167
160
|
priorityField?: "trim" | "exteriorColor" | "interiorColor" | undefined;
|
|
168
161
|
};
|
|
169
162
|
output: {
|
|
170
|
-
vehicle:
|
|
163
|
+
vehicle: import("../types").Vehicle;
|
|
171
164
|
matchType: "exact" | "partial";
|
|
172
165
|
};
|
|
173
166
|
meta: object;
|
|
@@ -183,7 +176,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
183
176
|
input: {
|
|
184
177
|
vins: string[];
|
|
185
178
|
};
|
|
186
|
-
output: import("../types").
|
|
179
|
+
output: import("../types").Vehicle[];
|
|
187
180
|
meta: object;
|
|
188
181
|
}>;
|
|
189
182
|
getSuggestedVehicles: import("@trpc/server").TRPCQueryProcedure<{
|
|
@@ -195,20 +188,76 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
195
188
|
preferredFuelTypes?: [string, number][] | undefined;
|
|
196
189
|
preferredDrivetrains?: [string, number][] | undefined;
|
|
197
190
|
priceRangePreference?: {
|
|
198
|
-
min: number;
|
|
199
191
|
max: number;
|
|
192
|
+
min: number;
|
|
200
193
|
} | undefined;
|
|
201
194
|
mileageRangePreference?: {
|
|
202
|
-
min: number;
|
|
203
195
|
max: number;
|
|
196
|
+
min: number;
|
|
204
197
|
} | undefined;
|
|
205
198
|
};
|
|
206
199
|
output: {
|
|
207
|
-
vehicles: import("../types").
|
|
200
|
+
vehicles: import("../types").Vehicle[];
|
|
208
201
|
totalCandidates: number;
|
|
209
202
|
};
|
|
210
203
|
meta: object;
|
|
211
204
|
}>;
|
|
205
|
+
searchInventory: import("@trpc/server").TRPCQueryProcedure<{
|
|
206
|
+
input: {
|
|
207
|
+
filters?: {
|
|
208
|
+
brand?: string[] | undefined;
|
|
209
|
+
model?: string[] | undefined;
|
|
210
|
+
trim?: string[] | undefined;
|
|
211
|
+
year?: string[] | undefined;
|
|
212
|
+
status?: string[] | undefined;
|
|
213
|
+
price?: {
|
|
214
|
+
max: string;
|
|
215
|
+
min: string;
|
|
216
|
+
} | undefined;
|
|
217
|
+
mileage?: {
|
|
218
|
+
max: string;
|
|
219
|
+
min: string;
|
|
220
|
+
} | undefined;
|
|
221
|
+
location?: string[] | undefined;
|
|
222
|
+
fuelType?: string[] | undefined;
|
|
223
|
+
bodyStyle?: string[] | undefined;
|
|
224
|
+
exteriorColor?: string[] | undefined;
|
|
225
|
+
interiorColor?: string[] | undefined;
|
|
226
|
+
drivetrain?: string[] | undefined;
|
|
227
|
+
doors?: string[] | undefined;
|
|
228
|
+
} | undefined;
|
|
229
|
+
sortBy?: "year_desc" | "year_asc" | "price_desc" | "price_asc" | "mileage_desc" | "mileage_asc" | undefined;
|
|
230
|
+
groupByModel?: boolean | undefined;
|
|
231
|
+
searchQuery?: string | undefined;
|
|
232
|
+
pagination?: {
|
|
233
|
+
limit?: number | undefined;
|
|
234
|
+
offset?: number | undefined;
|
|
235
|
+
} | undefined;
|
|
236
|
+
};
|
|
237
|
+
output: {
|
|
238
|
+
vehicles: {
|
|
239
|
+
vin: string;
|
|
240
|
+
brand: string;
|
|
241
|
+
model: string;
|
|
242
|
+
trim: string;
|
|
243
|
+
year: number;
|
|
244
|
+
price: number;
|
|
245
|
+
mainImage: string | undefined;
|
|
246
|
+
}[];
|
|
247
|
+
totalCount: number;
|
|
248
|
+
pagination: {
|
|
249
|
+
limit: number;
|
|
250
|
+
offset: number;
|
|
251
|
+
hasMore: boolean;
|
|
252
|
+
};
|
|
253
|
+
searchMeta: {
|
|
254
|
+
query: string;
|
|
255
|
+
resultCount: number;
|
|
256
|
+
executionTimeMs: number;
|
|
257
|
+
} | undefined;
|
|
258
|
+
};
|
|
259
|
+
meta: object;
|
|
260
|
+
}>;
|
|
212
261
|
}>>;
|
|
213
262
|
sync: import("@trpc/server").TRPCBuiltRouter<{
|
|
214
263
|
ctx: import("../context").TRPCContext;
|
|
@@ -224,7 +273,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
224
273
|
message: string;
|
|
225
274
|
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
226
275
|
};
|
|
227
|
-
transformer:
|
|
276
|
+
transformer: true;
|
|
228
277
|
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
229
278
|
syncTenant: import("@trpc/server").TRPCMutationProcedure<{
|
|
230
279
|
input: void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routers/index.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routers/index.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGpB,CAAA;AAEF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inventory router for vehicle service
|
|
3
|
+
* Extracted from CMS and adapted for standalone service
|
|
4
|
+
*/
|
|
1
5
|
export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
2
6
|
ctx: import("../context").TRPCContext;
|
|
3
7
|
meta: object;
|
|
@@ -12,7 +16,7 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
12
16
|
message: string;
|
|
13
17
|
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
14
18
|
};
|
|
15
|
-
transformer:
|
|
19
|
+
transformer: true;
|
|
16
20
|
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
17
21
|
/**
|
|
18
22
|
* Get facet values for filtering
|
|
@@ -20,26 +24,26 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
20
24
|
*/
|
|
21
25
|
getFacets: import("@trpc/server").TRPCQueryProcedure<{
|
|
22
26
|
input: {
|
|
27
|
+
brand?: string | string[] | undefined;
|
|
28
|
+
model?: string | string[] | undefined;
|
|
23
29
|
trim?: string | string[] | undefined;
|
|
24
|
-
fuelType?: string | string[] | undefined;
|
|
25
|
-
bodyStyle?: string | string[] | undefined;
|
|
26
|
-
exteriorColor?: string | string[] | undefined;
|
|
27
|
-
interiorColor?: string | string[] | undefined;
|
|
28
30
|
year?: string | string[] | undefined;
|
|
29
31
|
status?: string | string[] | undefined;
|
|
30
|
-
location?: string | string[] | undefined;
|
|
31
|
-
drivetrain?: string | string[] | undefined;
|
|
32
|
-
doors?: string | string[] | undefined;
|
|
33
32
|
price?: {
|
|
34
|
-
min: string;
|
|
35
33
|
max: string;
|
|
34
|
+
min: string;
|
|
36
35
|
} | undefined;
|
|
37
36
|
mileage?: {
|
|
38
|
-
min: string;
|
|
39
37
|
max: string;
|
|
38
|
+
min: string;
|
|
40
39
|
} | undefined;
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
location?: string | string[] | undefined;
|
|
41
|
+
fuelType?: string | string[] | undefined;
|
|
42
|
+
bodyStyle?: string | string[] | undefined;
|
|
43
|
+
exteriorColor?: string | string[] | undefined;
|
|
44
|
+
interiorColor?: string | string[] | undefined;
|
|
45
|
+
drivetrain?: string | string[] | undefined;
|
|
46
|
+
doors?: string | string[] | undefined;
|
|
43
47
|
} | undefined;
|
|
44
48
|
output: import("../types").FilterState;
|
|
45
49
|
meta: object;
|
|
@@ -58,48 +62,50 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
58
62
|
*/
|
|
59
63
|
getVehicle: import("@trpc/server").TRPCQueryProcedure<{
|
|
60
64
|
input: string;
|
|
61
|
-
output: import("../types").
|
|
65
|
+
output: import("../types").Vehicle;
|
|
62
66
|
meta: object;
|
|
63
67
|
}>;
|
|
64
68
|
/**
|
|
65
69
|
* OPTIMIZED: Unified inventory endpoint - handles both traditional and MMT filtering
|
|
66
70
|
* Supports both one-per-model and all-vehicles modes via groupByModel parameter
|
|
71
|
+
* Supports optional text search via searchQuery parameter
|
|
67
72
|
*/
|
|
68
73
|
getInventory: import("@trpc/server").TRPCQueryProcedure<{
|
|
69
74
|
input: {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
name: string;
|
|
74
|
-
trims: string[];
|
|
75
|
-
}[];
|
|
76
|
-
}[] | undefined;
|
|
77
|
-
filters?: {
|
|
75
|
+
filters: {
|
|
76
|
+
brand?: string | string[] | undefined;
|
|
77
|
+
model?: string | string[] | undefined;
|
|
78
78
|
trim?: string | string[] | undefined;
|
|
79
|
-
fuelType?: string | string[] | undefined;
|
|
80
|
-
bodyStyle?: string | string[] | undefined;
|
|
81
|
-
exteriorColor?: string | string[] | undefined;
|
|
82
|
-
interiorColor?: string | string[] | undefined;
|
|
83
79
|
year?: string | string[] | undefined;
|
|
84
80
|
status?: string | string[] | undefined;
|
|
85
|
-
location?: string | string[] | undefined;
|
|
86
|
-
drivetrain?: string | string[] | undefined;
|
|
87
|
-
doors?: string | string[] | undefined;
|
|
88
81
|
price?: {
|
|
89
|
-
min: string;
|
|
90
82
|
max: string;
|
|
83
|
+
min: string;
|
|
91
84
|
} | undefined;
|
|
92
85
|
mileage?: {
|
|
93
|
-
min: string;
|
|
94
86
|
max: string;
|
|
87
|
+
min: string;
|
|
95
88
|
} | undefined;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
location?: string | string[] | undefined;
|
|
90
|
+
fuelType?: string | string[] | undefined;
|
|
91
|
+
bodyStyle?: string | string[] | undefined;
|
|
92
|
+
exteriorColor?: string | string[] | undefined;
|
|
93
|
+
interiorColor?: string | string[] | undefined;
|
|
94
|
+
drivetrain?: string | string[] | undefined;
|
|
95
|
+
doors?: string | string[] | undefined;
|
|
96
|
+
};
|
|
97
|
+
selectedMakeModelTrims?: {
|
|
98
|
+
make: string;
|
|
99
|
+
models: {
|
|
100
|
+
name: string;
|
|
101
|
+
trims: string[];
|
|
102
|
+
}[];
|
|
103
|
+
}[] | undefined;
|
|
99
104
|
limit?: number | undefined;
|
|
100
105
|
sortBy?: "year_desc" | "year_asc" | "price_desc" | "price_asc" | "mileage_desc" | "mileage_asc" | undefined;
|
|
101
106
|
page?: number | undefined;
|
|
102
107
|
groupByModel?: boolean | undefined;
|
|
108
|
+
searchQuery?: string | undefined;
|
|
103
109
|
};
|
|
104
110
|
output: {
|
|
105
111
|
filters: {
|
|
@@ -115,7 +121,7 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
115
121
|
price?: import("../types").RangeValue;
|
|
116
122
|
mileage?: import("../types").RangeValue;
|
|
117
123
|
};
|
|
118
|
-
vehicles: import("../types").
|
|
124
|
+
vehicles: import("../types").Vehicle[];
|
|
119
125
|
pagination: {
|
|
120
126
|
totalDocs: number;
|
|
121
127
|
page: number;
|
|
@@ -135,17 +141,6 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
135
141
|
};
|
|
136
142
|
meta: object;
|
|
137
143
|
}>;
|
|
138
|
-
/**
|
|
139
|
-
* Get a representative vehicle for a specific make/model combination
|
|
140
|
-
*/
|
|
141
|
-
getRepresentativeVehicle: import("@trpc/server").TRPCQueryProcedure<{
|
|
142
|
-
input: {
|
|
143
|
-
brand: string;
|
|
144
|
-
model: string;
|
|
145
|
-
};
|
|
146
|
-
output: import("../types").VehicleWithPricing;
|
|
147
|
-
meta: object;
|
|
148
|
-
}>;
|
|
149
144
|
/**
|
|
150
145
|
* Get available colors for a specific trim of a make/model combination
|
|
151
146
|
*/
|
|
@@ -165,15 +160,15 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
165
160
|
*/
|
|
166
161
|
getVehicleByConfiguration: import("@trpc/server").TRPCQueryProcedure<{
|
|
167
162
|
input: {
|
|
168
|
-
trim: string | null;
|
|
169
163
|
brand: string;
|
|
170
164
|
model: string;
|
|
165
|
+
trim: string | null;
|
|
171
166
|
exteriorColorCode: string | null;
|
|
172
167
|
interiorColorCode: string | null;
|
|
173
168
|
priorityField?: "trim" | "exteriorColor" | "interiorColor" | undefined;
|
|
174
169
|
};
|
|
175
170
|
output: {
|
|
176
|
-
vehicle:
|
|
171
|
+
vehicle: import("../types").Vehicle;
|
|
177
172
|
matchType: "exact" | "partial";
|
|
178
173
|
};
|
|
179
174
|
meta: object;
|
|
@@ -198,7 +193,7 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
198
193
|
input: {
|
|
199
194
|
vins: string[];
|
|
200
195
|
};
|
|
201
|
-
output: import("../types").
|
|
196
|
+
output: import("../types").Vehicle[];
|
|
202
197
|
meta: object;
|
|
203
198
|
}>;
|
|
204
199
|
/**
|
|
@@ -214,19 +209,81 @@ export declare const inventoryRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
214
209
|
preferredFuelTypes?: [string, number][] | undefined;
|
|
215
210
|
preferredDrivetrains?: [string, number][] | undefined;
|
|
216
211
|
priceRangePreference?: {
|
|
217
|
-
min: number;
|
|
218
212
|
max: number;
|
|
213
|
+
min: number;
|
|
219
214
|
} | undefined;
|
|
220
215
|
mileageRangePreference?: {
|
|
221
|
-
min: number;
|
|
222
216
|
max: number;
|
|
217
|
+
min: number;
|
|
223
218
|
} | undefined;
|
|
224
219
|
};
|
|
225
220
|
output: {
|
|
226
|
-
vehicles: import("../types").
|
|
221
|
+
vehicles: import("../types").Vehicle[];
|
|
227
222
|
totalCandidates: number;
|
|
228
223
|
};
|
|
229
224
|
meta: object;
|
|
230
225
|
}>;
|
|
226
|
+
/**
|
|
227
|
+
* Search inventory with full-text search
|
|
228
|
+
* Returns minimal vehicle data for search results (image, vin, make, model, trim, year, price)
|
|
229
|
+
* Delegates to getInventory with searchQuery parameter
|
|
230
|
+
* IMPORTANT: Always filtered by tenantId for multi-tenant isolation
|
|
231
|
+
*/
|
|
232
|
+
searchInventory: import("@trpc/server").TRPCQueryProcedure<{
|
|
233
|
+
input: {
|
|
234
|
+
filters?: {
|
|
235
|
+
brand?: string[] | undefined;
|
|
236
|
+
model?: string[] | undefined;
|
|
237
|
+
trim?: string[] | undefined;
|
|
238
|
+
year?: string[] | undefined;
|
|
239
|
+
status?: string[] | undefined;
|
|
240
|
+
price?: {
|
|
241
|
+
max: string;
|
|
242
|
+
min: string;
|
|
243
|
+
} | undefined;
|
|
244
|
+
mileage?: {
|
|
245
|
+
max: string;
|
|
246
|
+
min: string;
|
|
247
|
+
} | undefined;
|
|
248
|
+
location?: string[] | undefined;
|
|
249
|
+
fuelType?: string[] | undefined;
|
|
250
|
+
bodyStyle?: string[] | undefined;
|
|
251
|
+
exteriorColor?: string[] | undefined;
|
|
252
|
+
interiorColor?: string[] | undefined;
|
|
253
|
+
drivetrain?: string[] | undefined;
|
|
254
|
+
doors?: string[] | undefined;
|
|
255
|
+
} | undefined;
|
|
256
|
+
sortBy?: "year_desc" | "year_asc" | "price_desc" | "price_asc" | "mileage_desc" | "mileage_asc" | undefined;
|
|
257
|
+
groupByModel?: boolean | undefined;
|
|
258
|
+
searchQuery?: string | undefined;
|
|
259
|
+
pagination?: {
|
|
260
|
+
limit?: number | undefined;
|
|
261
|
+
offset?: number | undefined;
|
|
262
|
+
} | undefined;
|
|
263
|
+
};
|
|
264
|
+
output: {
|
|
265
|
+
vehicles: {
|
|
266
|
+
vin: string;
|
|
267
|
+
brand: string;
|
|
268
|
+
model: string;
|
|
269
|
+
trim: string;
|
|
270
|
+
year: number;
|
|
271
|
+
price: number;
|
|
272
|
+
mainImage: string | undefined;
|
|
273
|
+
}[];
|
|
274
|
+
totalCount: number;
|
|
275
|
+
pagination: {
|
|
276
|
+
limit: number;
|
|
277
|
+
offset: number;
|
|
278
|
+
hasMore: boolean;
|
|
279
|
+
};
|
|
280
|
+
searchMeta: {
|
|
281
|
+
query: string;
|
|
282
|
+
resultCount: number;
|
|
283
|
+
executionTimeMs: number;
|
|
284
|
+
} | undefined;
|
|
285
|
+
};
|
|
286
|
+
meta: object;
|
|
287
|
+
}>;
|
|
231
288
|
}>>;
|
|
232
289
|
//# sourceMappingURL=inventory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/routers/inventory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/routers/inventory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwGH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;IAC1B;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;IAaH;;;OAGG;;;;;;IAcH;;OAEG;;;;;;IAeH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoEH;;OAEG;;;;;;;;;;IA+BH;;;;OAIG;;;;;;;;;;;;;;;;IAqCH;;;;OAIG;;;;;;;;IAwBH;;;OAGG;;;;;;;;IAqBH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;IAgGH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DH,CAAA"}
|
package/dist/routers/sync.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare const syncRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
16
16
|
message: string;
|
|
17
17
|
code: import("@trpc/server").TRPC_ERROR_CODE_NUMBER;
|
|
18
18
|
};
|
|
19
|
-
transformer:
|
|
19
|
+
transformer: true;
|
|
20
20
|
}, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
|
|
21
21
|
/**
|
|
22
22
|
* Manual sync for a specific tenant
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/routers/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;IACrB;;;OAGG;;;;;;;;;;;;;IAsBH;;;OAGG;;;;;;;;;;;;;;;IA4BH;;;OAGG;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/routers/sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;IACrB;;;OAGG;;;;;;;;;;;;;IAsBH;;;OAGG;;;;;;;;;;;;;;;IA4BH;;;OAGG;;;;;;;;;;;;;;;IAsCH;;OAEG;;;;;;;;;;;IAkBH;;OAEG;;;;;;;;;;;IAqBH;;OAEG;;;;;;;;;IAuBH;;OAEG;;;;;;;;;;;GAiBH,CAAA"}
|