- Introduced `ProductsModule` to manage product data, including read and write controllers. - Created database migrations for the `products`, `sales_requests`, `sales_orders`, `sales_invoices`, and related tables, including constraints and unique indexes. - Implemented validation for product fields such as code, name, unit, and brand with corresponding utility functions. - Developed service and repository layers for handling product and sales data operations. - Added unit tests for the products and sales services, repositories, and controllers to ensure functionality and correctness. - Updated application module to include the new `ProductsModule` and related sales modules for better organization.
21 lines
1013 B
SQL
21 lines
1013 B
SQL
CREATE TABLE "products" (
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
"code" varchar(32) NOT NULL,
|
|
"name" varchar(128) NOT NULL,
|
|
"unit" varchar(16),
|
|
"price" numeric(18, 4),
|
|
"brand" varchar(64),
|
|
"status" text DEFAULT 'draft' NOT NULL,
|
|
"created_at" bigint NOT NULL,
|
|
"updated_at" bigint NOT NULL,
|
|
"created_by" uuid NOT NULL,
|
|
"updated_by" uuid NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
ALTER TABLE "products" ADD CONSTRAINT "products_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
ALTER TABLE "products" ADD CONSTRAINT "products_updated_by_users_id_fk" FOREIGN KEY ("updated_by") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
CREATE UNIQUE INDEX "products_code_unique" ON "products" USING btree ("code");
|
|
--> statement-breakpoint
|
|
INSERT INTO "privilege_keys" ("code", "label", "sort_order") VALUES
|
|
('CONFIGURATION.PRODUCT', 'Products', 7);
|