mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-17 04:55:50 +00:00
Improve MySQL and PosrgreSQL switch
This commit is contained in:
parent
bae94cf327
commit
7acdd19c5c
7 changed files with 108 additions and 108 deletions
44
pom.xml
44
pom.xml
|
@ -33,13 +33,6 @@
|
|||
<postgresql-driver.version>9.4.1211.jre7</postgresql-driver.version>
|
||||
|
||||
<cobertura.version>2.7</cobertura.version>
|
||||
|
||||
<jpa.database>HSQL</jpa.database>
|
||||
<jdbc.driverClassName>org.hsqldb.jdbcDriver</jdbc.driverClassName>
|
||||
<jdbc.url>jdbc:hsqldb:mem:petclinic</jdbc.url>
|
||||
<jdbc.username>sa</jdbc.username>
|
||||
<jdbc.password></jdbc.password>
|
||||
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
@ -164,13 +157,6 @@
|
|||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Databases - Uses HSQL by default -->
|
||||
<dependency>
|
||||
<groupId>org.hsqldb</groupId>
|
||||
<artifactId>hsqldb</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- HIBERNATE -->
|
||||
<dependency>
|
||||
<groupId>org.hibernate</groupId>
|
||||
|
@ -429,8 +415,30 @@
|
|||
</build>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>MYSQL</id>
|
||||
<id>HSQLDB</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<properties>
|
||||
<db.script>hsqldb</db.script>
|
||||
<jpa.database>HSQL</jpa.database>
|
||||
<jdbc.driverClassName>org.hsqldb.jdbcDriver</jdbc.driverClassName>
|
||||
<jdbc.url>jdbc:hsqldb:mem:petclinic</jdbc.url>
|
||||
<jdbc.username>sa</jdbc.username>
|
||||
<jdbc.password/>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.hsqldb</groupId>
|
||||
<artifactId>hsqldb</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>MySQL</id>
|
||||
<properties>
|
||||
<db.script>mysql</db.script>
|
||||
<jpa.database>MYSQL</jpa.database>
|
||||
<jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
|
||||
<jdbc.url>jdbc:mysql://localhost:3306/petclinic?useUnicode=true</jdbc.url>
|
||||
|
@ -442,14 +450,15 @@
|
|||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>${mysql-driver.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>POSTGRESQL</id>
|
||||
<id>PostgreSQL</id>
|
||||
<properties>
|
||||
<db.script>postgresql</db.script>
|
||||
<jpa.database>POSTGRESQL</jpa.database>
|
||||
<jpa.databasePlatform>org.hibernate.dialect.PostgreSQLDialect</jpa.databasePlatform>
|
||||
<jdbc.driverClassName>org.postgresql.Driver</jdbc.driverClassName>
|
||||
<jdbc.url>jdbc:postgresql://localhost:5432/petclinic</jdbc.url>
|
||||
<jdbc.username>postgres</jdbc.username>
|
||||
|
@ -460,6 +469,7 @@
|
|||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
<version>${postgresql-driver.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
|
|
12
readme.md
12
readme.md
|
@ -23,13 +23,13 @@ gets populated at startup with data.
|
|||
A similar setups is provided for MySql and PostgreSQL in case a persistent database configuration is needed.
|
||||
To run petclinic locally using persistent database, it is needed to run with profile defined in main pom.xml file.
|
||||
|
||||
For MySQL database, it is needed to run with 'MYSQL' profile defined in main pom.xml file.
|
||||
For MySQL database, it is needed to run with 'MySQL' profile defined in main pom.xml file.
|
||||
|
||||
```
|
||||
./mvnw tomcat7:run -P MYSQL
|
||||
./mvnw tomcat7:run -P MySQL
|
||||
```
|
||||
|
||||
Before do this, would be good to check properties defined in MYSQL profile inside pom.xml file.
|
||||
Before do this, would be good to check properties defined in MySQL profile inside pom.xml file.
|
||||
|
||||
```
|
||||
<properties>
|
||||
|
@ -47,13 +47,13 @@ You may start a MySql database with docker:
|
|||
docker run -e MYSQL_ROOT_PASSWORD=petclinic -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7.8
|
||||
```
|
||||
|
||||
For PostgreSQL database, it is needed to run with 'POSTGRESQL' profile defined in main pom.xml file.
|
||||
For PostgreSQL database, it is needed to run with 'PostgreSQL' profile defined in main pom.xml file.
|
||||
|
||||
```
|
||||
./mvnw tomcat7:run -P POSTGRESQL
|
||||
./mvnw tomcat7:run -P PostgreSQL
|
||||
```
|
||||
|
||||
Before do this, would be good to check properties defined in POSTGRESQL profile inside pom.xml file.
|
||||
Before do this, would be good to check properties defined in PostgreSQL profile inside pom.xml file.
|
||||
|
||||
```
|
||||
<properties>
|
||||
|
|
|
@ -7,18 +7,17 @@
|
|||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
1) Download and install the MySQL database (e.g., MySQL Community Server 5.1.x),
|
||||
which can be found here: http://dev.mysql.com/downloads/
|
||||
1) Download and install the MySQL database (e.g., MySQL Community Server 5.7.x),
|
||||
which can be found here: http://dev.mysql.com/downloads/mysql/
|
||||
Alternatively, you may use the official MySQL docker image. Refer to the
|
||||
README.md for the Docker command line.
|
||||
|
||||
2) Download Connector/J, the MySQL JDBC driver (e.g., Connector/J 5.1.x), which
|
||||
can be found here: http://dev.mysql.com/downloads/connector/j/
|
||||
Copy the Connector/J JAR file (e.g., mysql-connector-java-5.1.5-bin.jar) into
|
||||
the db/mysql directory. Alternatively, uncomment the mysql-connector from the
|
||||
Petclinic pom.
|
||||
2) Dependency for Connector/J, the MySQL JDBC driver (e.g., Connector/J 5.1.x) is
|
||||
included in Petclinic pom.xml file. See the MySQL maven profile.
|
||||
Alternatively, download Connector/J JDBC driver from here:
|
||||
http://dev.mysql.com/downloads/connector/j/
|
||||
and copy the PostgreSQL JDBC driver JAR file (e.g., postgresql-9.4.1211.jre7.jar).
|
||||
|
||||
3) Create the PetClinic database and user by executing the "db/mysql/initDB.sql"
|
||||
script.
|
||||
|
||||
4) Open "src/main/resources/spring/data-access.properties"; comment out all properties in the
|
||||
"HSQL Settings" section; uncomment all properties in the "MySQL Settings"
|
||||
section.
|
||||
3) Change connection parameters into the MySQL profile of the pom.xml.
|
||||
Build and starth the web app with the MySQL profile:
|
||||
./mvnw tomcat7:run -P MySQL
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
CREATE DATABASE petclinic
|
||||
WITH OWNER = postgres
|
||||
ENCODING = 'UTF8'
|
||||
TABLESPACE = pg_default
|
||||
CONNECTION LIMIT = -1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS vets (
|
||||
id SERIAL,
|
||||
first_name VARCHAR(30),
|
||||
|
@ -11,7 +5,7 @@ CREATE TABLE IF NOT EXISTS vets (
|
|||
CONSTRAINT pk_vets PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_vets_last_name ON vets (last_name);
|
||||
CREATE INDEX IF NOT EXISTS idx_vets_last_name ON vets (last_name);
|
||||
|
||||
ALTER SEQUENCE vets_id_seq RESTART WITH 100;
|
||||
|
||||
|
@ -22,7 +16,7 @@ CREATE TABLE IF NOT EXISTS specialties (
|
|||
CONSTRAINT pk_specialties PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_specialties_name ON specialties (name);
|
||||
CREATE INDEX IF NOT EXISTS idx_specialties_name ON specialties (name);
|
||||
|
||||
ALTER SEQUENCE specialties_id_seq RESTART WITH 100;
|
||||
|
||||
|
@ -43,7 +37,7 @@ CREATE TABLE IF NOT EXISTS types (
|
|||
CONSTRAINT pk_types PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_types_name ON types (name);
|
||||
CREATE INDEX IF NOT EXISTS idx_types_name ON types (name);
|
||||
|
||||
ALTER SEQUENCE types_id_seq RESTART WITH 100;
|
||||
|
||||
|
@ -57,7 +51,7 @@ CREATE TABLE IF NOT EXISTS owners (
|
|||
CONSTRAINT pk_owners PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_owners_last_name ON owners (last_name);
|
||||
CREATE INDEX IF NOT EXISTS idx_owners_last_name ON owners (last_name);
|
||||
|
||||
ALTER SEQUENCE owners_id_seq RESTART WITH 100;
|
||||
|
||||
|
@ -73,7 +67,7 @@ CREATE TABLE IF NOT EXISTS pets (
|
|||
CONSTRAINT pk_pets PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
CREATE INDEX idx_pets_name ON pets (name);
|
||||
CREATE INDEX IF NOT EXISTS idx_pets_name ON pets (name);
|
||||
|
||||
ALTER SEQUENCE pets_id_seq RESTART WITH 100;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
================================================================================
|
||||
=== Spring PetClinic sample application - PostgreSQL Configuration ===
|
||||
=== Spring PetClinic sample application - PostgreSQL Configuration ===
|
||||
================================================================================
|
||||
|
||||
@author Sam Brannen
|
||||
|
@ -11,11 +11,12 @@
|
|||
which can be found here: https://www.postgresql.org/download/
|
||||
|
||||
2) Dependency for postgresql-driver included in Petclinic pom.xml file.
|
||||
Alternatively, download PostgreSQL JDBC driver from here: https://jdbc.postgresql.org/download.html
|
||||
See the PostgreSQL maven profile.
|
||||
Alternatively, download PostgreSQL JDBC driver from here: https://jdbc.postgresql.org/download.html
|
||||
and copy the PostgreSQL JDBC driver JAR file (e.g., postgresql-9.4.1211.jre7.jar) into
|
||||
the db/postgesql directory.
|
||||
|
||||
3) Create the PetClinic database
|
||||
3) Open psql and create the PetClinic database:
|
||||
|
||||
CREATE DATABASE petclinic
|
||||
WITH OWNER = postgres
|
||||
|
@ -23,10 +24,6 @@
|
|||
TABLESPACE = pg_default
|
||||
CONNECTION LIMIT = -1;
|
||||
|
||||
and execute the "db/postgresql/initDB.sql" script, then execute "db/postgresql/populateDB.sql"
|
||||
|
||||
4) Open "src/main/resources/spring/datasource-config.xml"; comment block
|
||||
<jdbc:initialize-database data-source="dataSource">
|
||||
<jdbc:script location="${jdbc.initLocation}"/>
|
||||
<jdbc:script location="${jdbc.dataLocation}"/>
|
||||
</jdbc:initialize-database>
|
||||
4) If required, change connection parameters into the PostgreSQL profile of the pom.xml.
|
||||
Build and starth the web app with the PostgreSQL profile:
|
||||
./mvnw tomcat7:run -P PostgreSQL
|
||||
|
|
|
@ -1,53 +1,53 @@
|
|||
INSERT INTO vets VALUES (1, 'James', 'Carter');
|
||||
INSERT INTO vets VALUES (2, 'Helen', 'Leary');
|
||||
INSERT INTO vets VALUES (3, 'Linda', 'Douglas');
|
||||
INSERT INTO vets VALUES (4, 'Rafael', 'Ortega');
|
||||
INSERT INTO vets VALUES (5, 'Henry', 'Stevens');
|
||||
INSERT INTO vets VALUES (6, 'Sharon', 'Jenkins');
|
||||
INSERT INTO vets VALUES (1, 'James', 'Carter') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vets VALUES (2, 'Helen', 'Leary') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vets VALUES (3, 'Linda', 'Douglas') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vets VALUES (4, 'Rafael', 'Ortega') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vets VALUES (5, 'Henry', 'Stevens') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vets VALUES (6, 'Sharon', 'Jenkins') ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO specialties VALUES (1, 'radiology');
|
||||
INSERT INTO specialties VALUES (2, 'surgery');
|
||||
INSERT INTO specialties VALUES (3, 'dentistry');
|
||||
INSERT INTO specialties VALUES (1, 'radiology') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO specialties VALUES (2, 'surgery') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO specialties VALUES (3, 'dentistry') ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO vet_specialties VALUES (2, 1);
|
||||
INSERT INTO vet_specialties VALUES (3, 2);
|
||||
INSERT INTO vet_specialties VALUES (3, 3);
|
||||
INSERT INTO vet_specialties VALUES (4, 2);
|
||||
INSERT INTO vet_specialties VALUES (5, 1);
|
||||
INSERT INTO vet_specialties VALUES (2, 1) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vet_specialties VALUES (3, 2) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vet_specialties VALUES (3, 3) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vet_specialties VALUES (4, 2) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO vet_specialties VALUES (5, 1) ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO types VALUES (1, 'cat');
|
||||
INSERT INTO types VALUES (2, 'dog');
|
||||
INSERT INTO types VALUES (3, 'lizard');
|
||||
INSERT INTO types VALUES (4, 'snake');
|
||||
INSERT INTO types VALUES (5, 'bird');
|
||||
INSERT INTO types VALUES (6, 'hamster');
|
||||
INSERT INTO types VALUES (1, 'cat') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO types VALUES (2, 'dog') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO types VALUES (3, 'lizard') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO types VALUES (4, 'snake') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO types VALUES (5, 'bird') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO types VALUES (6, 'hamster') ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');
|
||||
INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749');
|
||||
INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763');
|
||||
INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198');
|
||||
INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765');
|
||||
INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654');
|
||||
INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387');
|
||||
INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683');
|
||||
INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435');
|
||||
INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487');
|
||||
INSERT INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487') ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1);
|
||||
INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2);
|
||||
INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3);
|
||||
INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3);
|
||||
INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4);
|
||||
INSERT INTO pets VALUES (6, 'George', '2000-01-20', 4, 5);
|
||||
INSERT INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6);
|
||||
INSERT INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6);
|
||||
INSERT INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7);
|
||||
INSERT INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8);
|
||||
INSERT INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9);
|
||||
INSERT INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10);
|
||||
INSERT INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10);
|
||||
INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (6, 'George', '2000-01-20', 4, 5) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10) ON CONFLICT DO NOTHING;
|
||||
INSERT INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10) ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO visits VALUES (1, 7, '2010-03-04', 'rabies shot');
|
||||
INSERT INTO visits VALUES (2, 8, '2011-03-04', 'rabies shot');
|
||||
INSERT INTO visits VALUES (3, 8, '2009-06-04', 'neutered');
|
||||
INSERT INTO visits VALUES (4, 7, '2008-09-04', 'spayed');
|
||||
INSERT INTO visits VALUES (1, 7, '2010-03-04', 'rabies shot') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO visits VALUES (2, 8, '2011-03-04', 'rabies shot') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO visits VALUES (3, 8, '2009-06-04', 'neutered') ON CONFLICT DO NOTHING;
|
||||
INSERT INTO visits VALUES (4, 7, '2008-09-04', 'spayed') ON CONFLICT DO NOTHING;
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
# Targeted at system administrators, to avoid touching the context XML files.
|
||||
|
||||
# Properties that control the population of schema and data for a new data source
|
||||
jdbc.initLocation=classpath:db/hsqldb/initDB.sql
|
||||
jdbc.dataLocation=classpath:db/hsqldb/populateDB.sql
|
||||
jdbc.initLocation=classpath:db/${db.script}/initDB.sql
|
||||
jdbc.dataLocation=classpath:db/${db.script}/populateDB.sql
|
||||
|
||||
jpa.showSql=true
|
||||
|
||||
|
|
Loading…
Reference in a new issue