✅ order creation logic fix, refactor & cleanup on admin end
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { desc, eq, type Database } from "@pkg/db";
|
||||
import { customerInfo } from "@pkg/db/schema";
|
||||
import { customerInfo, order } from "@pkg/db/schema";
|
||||
import { getError, Logger } from "@pkg/logger";
|
||||
import { ERROR_CODES, type Result } from "@pkg/result";
|
||||
import {
|
||||
@@ -97,6 +97,45 @@ export class CustomerInfoRepository {
|
||||
}
|
||||
}
|
||||
|
||||
async getCustomerInfoByOrderId(
|
||||
oid: number,
|
||||
): Promise<Result<CustomerInfoModel>> {
|
||||
try {
|
||||
const result = await this.db.query.order.findFirst({
|
||||
where: eq(order.id, oid),
|
||||
columns: { id: true },
|
||||
with: { customerInfo: true },
|
||||
});
|
||||
const parsed = customerInfoModel.safeParse(result?.customerInfo);
|
||||
if (!parsed.success) {
|
||||
Logger.error("Failed to parse customer info", result);
|
||||
return {
|
||||
error: getError({
|
||||
code: ERROR_CODES.INTERNAL_SERVER_ERROR,
|
||||
message: "Failed to parse customer information",
|
||||
userHint: "Please try again",
|
||||
detail: "Failed to parse customer information",
|
||||
}),
|
||||
};
|
||||
}
|
||||
return { data: parsed.data };
|
||||
} catch (e) {
|
||||
return {
|
||||
error: getError(
|
||||
{
|
||||
code: ERROR_CODES.DATABASE_ERROR,
|
||||
message: "Failed to fetch customer information",
|
||||
detail:
|
||||
"An error occurred while retrieving the customer information from the database",
|
||||
userHint: "Please try refreshing the page",
|
||||
actionable: false,
|
||||
},
|
||||
e,
|
||||
),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async createCustomerInfo(
|
||||
payload: CreateCustomerInfoPayload,
|
||||
): Promise<Result<number>> {
|
||||
|
||||
@@ -20,6 +20,10 @@ export class CustomerInfoUseCases {
|
||||
return this.repo.getCustomerInfoById(id);
|
||||
}
|
||||
|
||||
async getCustomerInfoByOrderId(oid: number) {
|
||||
return this.repo.getCustomerInfoByOrderId(oid);
|
||||
}
|
||||
|
||||
async createCustomerInfo(payload: CreateCustomerInfoPayload) {
|
||||
return this.repo.createCustomerInfo(payload);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user