mirror of
https://git.imnavajas.es/jjimenez/erp-imprimelibros.git
synced 2026-01-12 08:28:49 +00:00
añadido sistema de migraciones
This commit is contained in:
14
liquibase.properties
Normal file
14
liquibase.properties
Normal file
@ -0,0 +1,14 @@
|
||||
# liquibase.properties (RAÍZ DEL PROYECTO)
|
||||
classpath=target/classes
|
||||
|
||||
# Conexión (ajusta DB, user y pass)
|
||||
url=jdbc:mysql://localhost:3309/imprimelibros
|
||||
#url=jdbc:mysql://localhost:3306/imprimelibros?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
|
||||
username=imprimelibros_user
|
||||
password=om91irrDctd
|
||||
|
||||
# Archivo que se generará con el snapshot (DEBE EXISTIR LA CARPETA)
|
||||
#outputChangeLogFile=src/main/resources/db/changelog/changesets/0001-baseline.yml
|
||||
|
||||
# Para LEER los cambios en los demás comandos (sync, update, rollback…)
|
||||
changeLogFile=src/main/resources/db/changelog/master.yml
|
||||
19
pom.xml
19
pom.xml
@ -29,6 +29,7 @@
|
||||
</scm>
|
||||
<properties>
|
||||
<java.version>21</java.version>
|
||||
<liquibase.version>4.29.2</liquibase.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
@ -143,6 +144,13 @@
|
||||
<version>1.0.10</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Migraciones -->
|
||||
<dependency>
|
||||
<groupId>org.liquibase</groupId>
|
||||
<artifactId>liquibase-core</artifactId>
|
||||
<version>${liquibase.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@ -151,6 +159,17 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
|
||||
<!-- (Migraciones) Plugin Maven para generar/ejecutar changelogs -->
|
||||
<plugin>
|
||||
<groupId>org.liquibase</groupId>
|
||||
<artifactId>liquibase-maven-plugin</artifactId>
|
||||
<version>4.29.2</version>
|
||||
<configuration>
|
||||
<!-- Usa variables de Maven/CI o un liquibase.properties -->
|
||||
<propertyFile>liquibase.properties</propertyFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
@ -92,3 +92,13 @@ spring.jpa.properties.hibernate.jdbc.time_zone=UTC
|
||||
# PDF Templates
|
||||
imprimelibros.pdf.templates.PRESUPUESTO_presupuesto-a4=imprimelibros/pdf/presupuesto-a4
|
||||
imprimelibros.pdf.templates.FACTURA_factura-a4=imprimelibros/pdf/factura-a4
|
||||
|
||||
# Liquibase
|
||||
spring.liquibase.enabled=true
|
||||
spring.liquibase.change-log=classpath:db/changelog/master.yml
|
||||
# Si quieres especificar el schema por defecto:
|
||||
# spring.liquibase.default-schema=imprimelibros
|
||||
# Si necesitas parámetros de conexión distintos a los de Spring Data (no suele hacer falta):
|
||||
# spring.liquibase.url=jdbc:mysql://localhost:3306/imprimelibros
|
||||
# spring.liquibase.user=tu_user
|
||||
# spring.liquibase.password=tu_pass
|
||||
|
||||
1065
src/main/resources/db/changelog/changesets/0001-baseline.yml
Normal file
1065
src/main/resources/db/changelog/changesets/0001-baseline.yml
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,146 @@
|
||||
databaseChangeLog:
|
||||
- changeSet:
|
||||
id: 0002-create-pedidos
|
||||
author: jjo
|
||||
|
||||
preConditions:
|
||||
- not:
|
||||
tableExists:
|
||||
tableName: pedidos
|
||||
|
||||
changes:
|
||||
- createTable:
|
||||
tableName: pedidos
|
||||
columns:
|
||||
- column:
|
||||
name: id
|
||||
type: BIGINT AUTO_INCREMENT
|
||||
constraints:
|
||||
primaryKey: true
|
||||
primaryKeyName: pk_pedidos
|
||||
- column:
|
||||
name: presupuesto_id
|
||||
type: BIGINT
|
||||
constraints:
|
||||
nullable: false
|
||||
- column:
|
||||
name: created_by
|
||||
type: BIGINT
|
||||
constraints:
|
||||
nullable: true
|
||||
- column:
|
||||
name: updated_by
|
||||
type: BIGINT
|
||||
constraints:
|
||||
nullable: true
|
||||
- column:
|
||||
name: deleted_by
|
||||
type: BIGINT
|
||||
constraints:
|
||||
nullable: true
|
||||
- column:
|
||||
name: deleted
|
||||
type: TINYINT(1)
|
||||
defaultValueNumeric: 0
|
||||
constraints:
|
||||
nullable: false
|
||||
- column:
|
||||
name: created_at
|
||||
type: TIMESTAMP
|
||||
defaultValueComputed: CURRENT_TIMESTAMP
|
||||
constraints:
|
||||
nullable: false
|
||||
- column:
|
||||
name: updated_at
|
||||
type: TIMESTAMP
|
||||
defaultValueComputed: CURRENT_TIMESTAMP
|
||||
constraints:
|
||||
nullable: false
|
||||
- column:
|
||||
name: deleted_at
|
||||
type: TIMESTAMP
|
||||
constraints:
|
||||
nullable: true
|
||||
|
||||
# Forzamos ON UPDATE para updated_at (MySQL/MariaDB)
|
||||
- sql:
|
||||
dbms: mysql
|
||||
splitStatements: false
|
||||
sql: |
|
||||
ALTER TABLE pedidos
|
||||
MODIFY COLUMN updated_at TIMESTAMP NOT NULL
|
||||
DEFAULT CURRENT_TIMESTAMP
|
||||
ON UPDATE CURRENT_TIMESTAMP;
|
||||
|
||||
# Índices
|
||||
- createIndex:
|
||||
tableName: pedidos
|
||||
indexName: idx_pedidos_presupuesto
|
||||
columns:
|
||||
- column:
|
||||
name: presupuesto_id
|
||||
- createIndex:
|
||||
tableName: pedidos
|
||||
indexName: idx_pedidos_deleted
|
||||
columns:
|
||||
- column:
|
||||
name: deleted
|
||||
|
||||
# Claves foráneas (ajusta nombres si difieren)
|
||||
- addForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
baseColumnNames: presupuesto_id
|
||||
constraintName: fk_pedidos_presupuesto
|
||||
referencedTableName: presupuesto
|
||||
referencedColumnNames: id
|
||||
onDelete: RESTRICT
|
||||
onUpdate: RESTRICT
|
||||
|
||||
- addForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
baseColumnNames: created_by
|
||||
constraintName: fk_pedidos_created_by
|
||||
referencedTableName: users
|
||||
referencedColumnNames: id
|
||||
onDelete: SET NULL
|
||||
onUpdate: RESTRICT
|
||||
|
||||
- addForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
baseColumnNames: updated_by
|
||||
constraintName: fk_pedidos_updated_by
|
||||
referencedTableName: users
|
||||
referencedColumnNames: id
|
||||
onDelete: SET NULL
|
||||
onUpdate: RESTRICT
|
||||
|
||||
- addForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
baseColumnNames: deleted_by
|
||||
constraintName: fk_pedidos_deleted_by
|
||||
referencedTableName: users
|
||||
referencedColumnNames: id
|
||||
onDelete: SET NULL
|
||||
onUpdate: RESTRICT
|
||||
|
||||
rollback:
|
||||
- dropForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
constraintName: fk_pedidos_deleted_by
|
||||
- dropForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
constraintName: fk_pedidos_updated_by
|
||||
- dropForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
constraintName: fk_pedidos_created_by
|
||||
- dropForeignKeyConstraint:
|
||||
baseTableName: pedidos
|
||||
constraintName: fk_pedidos_presupuesto
|
||||
- dropIndex:
|
||||
tableName: pedidos
|
||||
indexName: idx_pedidos_deleted
|
||||
- dropIndex:
|
||||
tableName: pedidos
|
||||
indexName: idx_pedidos_presupuesto
|
||||
- dropTable:
|
||||
tableName: pedidos
|
||||
5
src/main/resources/db/changelog/master.yml
Normal file
5
src/main/resources/db/changelog/master.yml
Normal file
@ -0,0 +1,5 @@
|
||||
databaseChangeLog:
|
||||
- include:
|
||||
file: db/changelog/changesets/0001-baseline.yml
|
||||
- include:
|
||||
file: db/changelog/changesets/0002-create-pedidos.yml
|
||||
Reference in New Issue
Block a user