order creation logic fix, refactor & cleanup on admin end

This commit is contained in:
user
2025-10-21 19:20:56 +03:00
parent b6bdb6d7e8
commit f0fa53a4e5
19 changed files with 100 additions and 415 deletions

View File

@@ -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>> {

View File

@@ -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);
}