1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 18:49:59 +01:00

feat(masterdata): Infra-Layer für Supplier Aggregate

Liquibase-Migration (006), JPA-Entities (SupplierEntity,
QualityCertificateEmbeddable), Mapper, Spring-Data-Repo,
Domain-Repo-Adapter, Request-DTOs, SupplierController
(9 Endpoints), ErrorMapper und UseCaseConfiguration erweitert.
This commit is contained in:
Sebastian Frick 2026-02-18 13:22:46 +01:00
parent 8b2fd38192
commit 6ec07e7b34
16 changed files with 869 additions and 0 deletions

View file

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet id="006-create-suppliers-table" author="effigenix">
<createTable tableName="suppliers">
<column name="id" type="VARCHAR(36)">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="VARCHAR(200)">
<constraints nullable="false" unique="true"/>
</column>
<column name="phone" type="VARCHAR(50)"/>
<column name="email" type="VARCHAR(255)"/>
<column name="contact_person" type="VARCHAR(200)"/>
<column name="street" type="VARCHAR(200)"/>
<column name="house_number" type="VARCHAR(20)"/>
<column name="postal_code" type="VARCHAR(20)"/>
<column name="city" type="VARCHAR(100)"/>
<column name="country" type="VARCHAR(2)"/>
<column name="payment_due_days" type="INT"/>
<column name="payment_description" type="VARCHAR(500)"/>
<column name="quality_score" type="INT"/>
<column name="delivery_score" type="INT"/>
<column name="price_score" type="INT"/>
<column name="status" type="VARCHAR(20)" defaultValue="ACTIVE">
<constraints nullable="false"/>
</column>
<column name="created_at" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP">
<constraints nullable="false"/>
</column>
<column name="updated_at" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP">
<constraints nullable="false"/>
</column>
</createTable>
<sql>
ALTER TABLE suppliers ADD CONSTRAINT chk_supplier_status CHECK (status IN ('ACTIVE', 'INACTIVE'));
</sql>
<createIndex tableName="suppliers" indexName="idx_suppliers_name">
<column name="name"/>
</createIndex>
<createIndex tableName="suppliers" indexName="idx_suppliers_status">
<column name="status"/>
</createIndex>
</changeSet>
<changeSet id="006-create-quality-certificates-table" author="effigenix">
<createTable tableName="quality_certificates">
<column name="supplier_id" type="VARCHAR(36)">
<constraints nullable="false"/>
</column>
<column name="certificate_type" type="VARCHAR(100)">
<constraints nullable="false"/>
</column>
<column name="issuer" type="VARCHAR(200)"/>
<column name="valid_from" type="DATE"/>
<column name="valid_until" type="DATE"/>
</createTable>
<addPrimaryKey tableName="quality_certificates"
columnNames="supplier_id, certificate_type, valid_from"
constraintName="pk_quality_certificates"/>
<addForeignKeyConstraint baseTableName="quality_certificates" baseColumnNames="supplier_id"
referencedTableName="suppliers" referencedColumnNames="id"
constraintName="fk_quality_certificates_supplier" onDelete="CASCADE"/>
<createIndex tableName="quality_certificates" indexName="idx_quality_certificates_supplier_id">
<column name="supplier_id"/>
</createIndex>
</changeSet>
</databaseChangeLog>

View file

@ -10,5 +10,6 @@
<include file="db/changelog/changes/003-create-audit-logs-table.xml"/>
<include file="db/changelog/changes/004-seed-admin-user.xml"/>
<include file="db/changelog/changes/005-create-masterdata-schema.xml"/>
<include file="db/changelog/changes/006-create-supplier-schema.xml"/>
</databaseChangeLog>