commit/task1

This commit is contained in:
Малашенков Станислав 2025-12-24 16:43:37 +03:00
parent fd4361b118
commit 7c7c6060d7
9 changed files with 508 additions and 5 deletions

View file

@ -38,6 +38,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'javax.cache:cache-api'
implementation 'jakarta.xml.bind:jakarta.xml.bind-api'
implementation 'org.springframework.boot:spring-boot-starter-liquibase'
runtimeOnly 'org.springframework.boot:spring-boot-starter-actuator'
runtimeOnly "org.webjars:webjars-locator-lite:${webjarsLocatorLiteVersion}"
runtimeOnly "org.webjars.npm:bootstrap:${webjarsBootstrapVersion}"

View file

@ -0,0 +1 @@
spring.liquibase.contexts=dev

View file

@ -4,4 +4,4 @@ spring.datasource.url=${MYSQL_URL:jdbc:mysql://localhost/petclinic}
spring.datasource.username=${MYSQL_USER:petclinic}
spring.datasource.password=${MYSQL_PASS:petclinic}
# SQL is written to be idempotent so this is safe
spring.sql.init.mode=always
spring.sql.init.mode=never

View file

@ -4,4 +4,4 @@ spring.datasource.url=${POSTGRES_URL:jdbc:postgresql://localhost/petclinic}
spring.datasource.username=${POSTGRES_USER:petclinic}
spring.datasource.password=${POSTGRES_PASS:petclinic}
# SQL is written to be idempotent so this is safe
spring.sql.init.mode=always
spring.sql.init.mode=never

View file

@ -0,0 +1 @@
spring.liquibase.contexts=prod

View file

@ -1,7 +1,10 @@
# database init, supports mysql too
database=h2
spring.sql.init.schema-locations=classpath*:db/${database}/schema.sql
spring.sql.init.data-locations=classpath*:db/${database}/data.sql
#database=h2
#spring.sql.init.schema-locations=classpath*:db/${database}/schema.sql
#spring.sql.init.data-locations=classpath*:db/${database}/data.sql
# --- Liquibase ---
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml
# Web
spring.thymeleaf.mode=HTML
@ -21,6 +24,7 @@ management.endpoints.web.exposure.include=*
logging.level.org.springframework=INFO
# logging.level.org.springframework.web=DEBUG
# logging.level.org.springframework.context.annotation=TRACE
logging.level.liquibase=INFO
# Maximum time static resources should be cached
spring.web.resources.cache.cachecontrol.max-age=12h

View file

@ -0,0 +1,172 @@
<?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
https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet id="001-owners" author="petclinic">
<createTable tableName="owners">
<column name="id" type="INT" autoIncrement="true">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_owners"/>
</column>
<column name="first_name" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
<column name="last_name" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
<column name="address" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
<column name="city" type="VARCHAR(80)">
<constraints nullable="false"/>
</column>
<column name="telephone" type="VARCHAR(20)">
<constraints nullable="false"/>
</column>
</createTable>
<createIndex tableName="owners" indexName="idx_owners_last_name">
<column name="last_name"/>
</createIndex>
</changeSet>
<changeSet id="002-types" author="petclinic">
<createTable tableName="types">
<column name="id" type="INT" autoIncrement="true">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_types"/>
</column>
<column name="name" type="VARCHAR(80)">
<constraints nullable="false" unique="true" uniqueConstraintName="uk_types_name"/>
</column>
</createTable>
</changeSet>
<changeSet id="003-pets" author="petclinic">
<createTable tableName="pets">
<column name="id" type="INT" autoIncrement="true">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_pets"/>
</column>
<column name="name" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
<column name="birth_date" type="DATE">
<constraints nullable="false"/>
</column>
<column name="type_id" type="INT">
<constraints nullable="false"/>
</column>
<column name="owner_id" type="INT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint
constraintName="fk_pets_types"
baseTableName="pets" baseColumnNames="type_id"
referencedTableName="types" referencedColumnNames="id"/>
<addForeignKeyConstraint
constraintName="fk_pets_owners"
baseTableName="pets" baseColumnNames="owner_id"
referencedTableName="owners" referencedColumnNames="id"/>
<createIndex tableName="pets" indexName="idx_pets_owner_id">
<column name="owner_id"/>
</createIndex>
<createIndex tableName="pets" indexName="idx_pets_type_id">
<column name="type_id"/>
</createIndex>
</changeSet>
<changeSet id="004-visits" author="petclinic">
<createTable tableName="visits">
<column name="id" type="INT" autoIncrement="true">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_visits"/>
</column>
<column name="pet_id" type="INT">
<constraints nullable="false"/>
</column>
<column name="visit_date" type="DATE">
<constraints nullable="false"/>
</column>
<column name="description" type="VARCHAR(255)">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint
constraintName="fk_visits_pets"
baseTableName="visits" baseColumnNames="pet_id"
referencedTableName="pets" referencedColumnNames="id"/>
<createIndex tableName="visits" indexName="idx_visits_pet_id">
<column name="pet_id"/>
</createIndex>
</changeSet>
<changeSet id="005-vets" author="petclinic">
<createTable tableName="vets">
<column name="id" type="INT" autoIncrement="true">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_vets"/>
</column>
<column name="first_name" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
<column name="last_name" type="VARCHAR(30)">
<constraints nullable="false"/>
</column>
</createTable>
<createIndex tableName="vets" indexName="idx_vets_last_name">
<column name="last_name"/>
</createIndex>
</changeSet>
<changeSet id="006-specialties" author="petclinic">
<createTable tableName="specialties">
<column name="id" type="INT" autoIncrement="true">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_specialties"/>
</column>
<column name="name" type="VARCHAR(80)">
<constraints nullable="false" unique="true" uniqueConstraintName="uk_specialties_name"/>
</column>
</createTable>
</changeSet>
<changeSet id="007-vet-specialties" author="petclinic">
<createTable tableName="vet_specialties">
<column name="vet_id" type="INT">
<constraints nullable="false"/>
</column>
<column name="specialty_id" type="INT">
<constraints nullable="false"/>
</column>
</createTable>
<addPrimaryKey
tableName="vet_specialties"
columnNames="vet_id, specialty_id"
constraintName="pk_vet_specialties"/>
<addForeignKeyConstraint
constraintName="fk_vet_specialties_vets"
baseTableName="vet_specialties" baseColumnNames="vet_id"
referencedTableName="vets" referencedColumnNames="id"/>
<addForeignKeyConstraint
constraintName="fk_vet_specialties_specialties"
baseTableName="vet_specialties" baseColumnNames="specialty_id"
referencedTableName="specialties" referencedColumnNames="id"/>
<createIndex tableName="vet_specialties" indexName="idx_vet_specialties_vet_id">
<column name="vet_id"/>
</createIndex>
<createIndex tableName="vet_specialties" indexName="idx_vet_specialties_specialty_id">
<column name="specialty_id"/>
</createIndex>
</changeSet>
</databaseChangeLog>

View file

@ -0,0 +1,311 @@
<?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
https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet id="002-01-types" author="petclinic" context="dev">
<insert tableName="types">
<column name="id" valueNumeric="1"/>
<column name="name" value="cat"/>
</insert>
<insert tableName="types">
<column name="id" valueNumeric="2"/>
<column name="name" value="dog"/>
</insert>
<insert tableName="types">
<column name="id" valueNumeric="3"/>
<column name="name" value="lizard"/>
</insert>
<insert tableName="types">
<column name="id" valueNumeric="4"/>
<column name="name" value="snake"/>
</insert>
<insert tableName="types">
<column name="id" valueNumeric="5"/>
<column name="name" value="bird"/>
</insert>
<insert tableName="types">
<column name="id" valueNumeric="6"/>
<column name="name" value="hamster"/>
</insert>
</changeSet>
<changeSet id="002-02-owners" author="petclinic" context="dev">
<insert tableName="owners">
<column name="id" valueNumeric="1"/>
<column name="first_name" value="George"/>
<column name="last_name" value="Franklin"/>
<column name="address" value="110 W. Liberty St."/>
<column name="city" value="Madison"/>
<column name="telephone" value="6085551023"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="2"/>
<column name="first_name" value="Betty"/>
<column name="last_name" value="Davis"/>
<column name="address" value="638 Cardinal Ave."/>
<column name="city" value="Sun Prairie"/>
<column name="telephone" value="6085551749"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="3"/>
<column name="first_name" value="Eduardo"/>
<column name="last_name" value="Rodriquez"/>
<column name="address" value="2693 Commerce St."/>
<column name="city" value="McFarland"/>
<column name="telephone" value="6085558763"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="4"/>
<column name="first_name" value="Harold"/>
<column name="last_name" value="Davis"/>
<column name="address" value="3675 Prairie Lane"/>
<column name="city" value="Madison"/>
<column name="telephone" value="6085553198"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="5"/>
<column name="first_name" value="Peter"/>
<column name="last_name" value="McTavish"/>
<column name="address" value="1266 St. James St."/>
<column name="city" value="Madison"/>
<column name="telephone" value="6085552674"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="6"/>
<column name="first_name" value="Jean"/>
<column name="last_name" value="Coleman"/>
<column name="address" value="5643 N. Raven Rd."/>
<column name="city" value="Sun Prairie"/>
<column name="telephone" value="6085555474"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="7"/>
<column name="first_name" value="Jeff"/>
<column name="last_name" value="Black"/>
<column name="address" value="4289 S. Lakeview Ave."/>
<column name="city" value="Madison"/>
<column name="telephone" value="6085555346"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="8"/>
<column name="first_name" value="Maria"/>
<column name="last_name" value="Escobito"/>
<column name="address" value="563 Friendly Dr."/>
<column name="city" value="Windsor"/>
<column name="telephone" value="6085555487"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="9"/>
<column name="first_name" value="David"/>
<column name="last_name" value="Schroeder"/>
<column name="address" value="1843 Oak Circle"/>
<column name="city" value="Madison"/>
<column name="telephone" value="6085556432"/>
</insert>
<insert tableName="owners">
<column name="id" valueNumeric="10"/>
<column name="first_name" value="Carlos"/>
<column name="last_name" value="Estaban"/>
<column name="address" value="1024 Adams St."/>
<column name="city" value="Madison"/>
<column name="telephone" value="6085559053"/>
</insert>
</changeSet>
<changeSet id="002-03-pets" author="petclinic" context="dev">
<insert tableName="pets">
<column name="id" valueNumeric="1"/>
<column name="name" value="Leo"/>
<column name="birth_date" valueDate="2010-09-07"/>
<column name="type_id" valueNumeric="1"/>
<column name="owner_id" valueNumeric="1"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="2"/>
<column name="name" value="Basil"/>
<column name="birth_date" valueDate="2012-08-06"/>
<column name="type_id" valueNumeric="6"/>
<column name="owner_id" valueNumeric="2"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="3"/>
<column name="name" value="Rosy"/>
<column name="birth_date" valueDate="2011-04-17"/>
<column name="type_id" valueNumeric="2"/>
<column name="owner_id" valueNumeric="3"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="4"/>
<column name="name" value="Jewel"/>
<column name="birth_date" valueDate="2010-03-07"/>
<column name="type_id" valueNumeric="2"/>
<column name="owner_id" valueNumeric="3"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="5"/>
<column name="name" value="Iggy"/>
<column name="birth_date" valueDate="2010-11-30"/>
<column name="type_id" valueNumeric="3"/>
<column name="owner_id" valueNumeric="4"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="6"/>
<column name="name" value="George"/>
<column name="birth_date" valueDate="2010-01-20"/>
<column name="type_id" valueNumeric="4"/>
<column name="owner_id" valueNumeric="5"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="7"/>
<column name="name" value="Samantha"/>
<column name="birth_date" valueDate="2012-09-04"/>
<column name="type_id" valueNumeric="1"/>
<column name="owner_id" valueNumeric="6"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="8"/>
<column name="name" value="Max"/>
<column name="birth_date" valueDate="2012-09-04"/>
<column name="type_id" valueNumeric="1"/>
<column name="owner_id" valueNumeric="6"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="9"/>
<column name="name" value="Lucky"/>
<column name="birth_date" valueDate="2011-08-06"/>
<column name="type_id" valueNumeric="5"/>
<column name="owner_id" valueNumeric="7"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="10"/>
<column name="name" value="Mulligan"/>
<column name="birth_date" valueDate="2007-02-24"/>
<column name="type_id" valueNumeric="2"/>
<column name="owner_id" valueNumeric="8"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="11"/>
<column name="name" value="Freddy"/>
<column name="birth_date" valueDate="2010-03-09"/>
<column name="type_id" valueNumeric="5"/>
<column name="owner_id" valueNumeric="9"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="12"/>
<column name="name" value="Lucky"/>
<column name="birth_date" valueDate="2010-06-24"/>
<column name="type_id" valueNumeric="2"/>
<column name="owner_id" valueNumeric="10"/>
</insert>
<insert tableName="pets">
<column name="id" valueNumeric="13"/>
<column name="name" value="Sly"/>
<column name="birth_date" valueDate="2012-06-08"/>
<column name="type_id" valueNumeric="1"/>
<column name="owner_id" valueNumeric="10"/>
</insert>
</changeSet>
<changeSet id="002-04-visits" author="petclinic" context="dev">
<insert tableName="visits">
<column name="id" valueNumeric="1"/>
<column name="pet_id" valueNumeric="7"/>
<column name="visit_date" valueDate="2013-01-01"/>
<column name="description" value="rabies shot"/>
</insert>
<insert tableName="visits">
<column name="id" valueNumeric="2"/>
<column name="pet_id" valueNumeric="8"/>
<column name="visit_date" valueDate="2013-01-02"/>
<column name="description" value="rabies shot"/>
</insert>
<insert tableName="visits">
<column name="id" valueNumeric="3"/>
<column name="pet_id" valueNumeric="8"/>
<column name="visit_date" valueDate="2013-01-03"/>
<column name="description" value="neutered"/>
</insert>
<insert tableName="visits">
<column name="id" valueNumeric="4"/>
<column name="pet_id" valueNumeric="7"/>
<column name="visit_date" valueDate="2013-01-04"/>
<column name="description" value="spayed"/>
</insert>
</changeSet>
<changeSet id="002-05-specialties" author="petclinic" context="dev">
<insert tableName="specialties">
<column name="id" valueNumeric="1"/>
<column name="name" value="radiology"/>
</insert>
<insert tableName="specialties">
<column name="id" valueNumeric="2"/>
<column name="name" value="surgery"/>
</insert>
<insert tableName="specialties">
<column name="id" valueNumeric="3"/>
<column name="name" value="dentistry"/>
</insert>
</changeSet>
<changeSet id="002-06-vets" author="petclinic" context="dev">
<insert tableName="vets">
<column name="id" valueNumeric="1"/>
<column name="first_name" value="James"/>
<column name="last_name" value="Carter"/>
</insert>
<insert tableName="vets">
<column name="id" valueNumeric="2"/>
<column name="first_name" value="Helen"/>
<column name="last_name" value="Leary"/>
</insert>
<insert tableName="vets">
<column name="id" valueNumeric="3"/>
<column name="first_name" value="Linda"/>
<column name="last_name" value="Douglas"/>
</insert>
<insert tableName="vets">
<column name="id" valueNumeric="4"/>
<column name="first_name" value="Rafael"/>
<column name="last_name" value="Ortega"/>
</insert>
<insert tableName="vets">
<column name="id" valueNumeric="5"/>
<column name="first_name" value="Henry"/>
<column name="last_name" value="Stevens"/>
</insert>
<insert tableName="vets">
<column name="id" valueNumeric="6"/>
<column name="first_name" value="Sharon"/>
<column name="last_name" value="Jenkins"/>
</insert>
</changeSet>
<changeSet id="002-07-vet-specialties" author="petclinic" context="dev">
<insert tableName="vet_specialties">
<column name="vet_id" valueNumeric="2"/>
<column name="specialty_id" valueNumeric="1"/>
</insert>
<insert tableName="vet_specialties">
<column name="vet_id" valueNumeric="3"/>
<column name="specialty_id" valueNumeric="2"/>
</insert>
<insert tableName="vet_specialties">
<column name="vet_id" valueNumeric="3"/>
<column name="specialty_id" valueNumeric="3"/>
</insert>
<insert tableName="vet_specialties">
<column name="vet_id" valueNumeric="4"/>
<column name="specialty_id" valueNumeric="2"/>
</insert>
<insert tableName="vet_specialties">
<column name="vet_id" valueNumeric="5"/>
<column name="specialty_id" valueNumeric="1"/>
</insert>
</changeSet>
</databaseChangeLog>

View file

@ -0,0 +1,13 @@
<?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
https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<include file="001-schema.xml" relativeToChangelogFile="true"/>
<include file="002-data-dev.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>