feat: add acquisition API foundation
Quality / test (push) Canceled after 0s

Add acquisition persistence, cost-basis calculation, seller-scoped admin routes, contracts, validation, migration, and focused application/HTTP tests.
This commit is contained in:
2026-09-09 00:39:56 -04:00
parent 26405d4ace
commit eee8e1978f
14 changed files with 291 additions and 0 deletions
+5
View File
@@ -15,6 +15,7 @@ import { registerPublicProductRoutes } from '../modules/products/routes/public-p
import { registerPublicSearchRoutes } from '../modules/search/routes/public-search-routes.js';
import { registerPublicSellerRoutes } from '../modules/sellers/routes/public-seller-routes.js';
import { registerAdminSaleRoutes } from '../modules/sales/routes/admin-sale-routes.js';
import { registerAdminAcquisitionRoutes } from '../modules/acquisitions/routes/admin-acquisition-routes.js';
export function buildApp(dependencies) {
const app = Fastify();
@@ -66,6 +67,10 @@ export function buildApp(dependencies) {
...dependencies,
prefix: '/api/v1/admin',
});
app.register(registerAdminAcquisitionRoutes, {
...dependencies,
prefix: '/api/v1/admin',
});
app.register(registerPublicSearchRoutes, {
...dependencies,
prefix: '/api/v1',
+4
View File
@@ -39,6 +39,8 @@ import { createSellerRepository } from '../modules/sellers/repositories/seller-r
import { createPublicSellerService } from '../modules/sellers/services/public-seller-service.js';
import { createSaleRepository } from '../modules/sales/repositories/sale-repository.js';
import { createSaleService } from '../modules/sales/services/sale-service.js';
import { createAcquisitionRepository } from '../modules/acquisitions/repositories/acquisition-repository.js';
import { createAcquisitionService } from '../modules/acquisitions/services/acquisition-service.js';
function parsePort(value) {
const port = Number.parseInt(value ?? '3000', 10);
@@ -63,6 +65,7 @@ async function startServer() {
const sellerRepository = createSellerRepository(database.db);
const conditionRepository = createConditionRepository(database.db);
const saleRepository = createSaleRepository(database.db);
const acquisitionRepository = createAcquisitionRepository(database.db);
const userRepository = createUserRepository(database.db);
const sessionRepository = createSessionRepository(database.db);
const passwordResetRepository = createPasswordResetRepository(database.db);
@@ -119,6 +122,7 @@ async function startServer() {
}),
listingService: createListingService({ listingRepository, inventoryImageRepository }),
saleService: createSaleService({ saleRepository }),
acquisitionService: createAcquisitionService({ acquisitionRepository }),
publicListingService: createPublicListingService({ listingRepository, publicImageService }),
productService: createProductService({ productRepository }),
publicProductService: createPublicProductService({ productRepository }),