mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-07-09 13:27:45 +00:00
feat(DevWeb): Support multiple databases (test, prod)
This commit is contained in:
@@ -2,13 +2,12 @@ version: '2'
|
|||||||
services:
|
services:
|
||||||
mysql-db:
|
mysql-db:
|
||||||
image: mysql:latest
|
image: mysql:latest
|
||||||
volumes:
|
|
||||||
- ./mysql:/docker-entrypoint-initdb.d
|
|
||||||
environment:
|
environment:
|
||||||
- MYSQL_DATABASE=db
|
|
||||||
- MYSQL_ROOT_PASSWORD=root
|
- MYSQL_ROOT_PASSWORD=root
|
||||||
|
volumes:
|
||||||
|
- ./mysql/init:/docker-entrypoint-initdb.d
|
||||||
ports:
|
ports:
|
||||||
- "6033:3306"
|
- "3306:3306"
|
||||||
expose:
|
expose:
|
||||||
- "3306"
|
- "3306"
|
||||||
|
|
||||||
@@ -16,11 +15,9 @@ services:
|
|||||||
image: maildev/maildev
|
image: maildev/maildev
|
||||||
environment:
|
environment:
|
||||||
- TZ=Asia/Shanghai
|
- TZ=Asia/Shanghai
|
||||||
- MAILDEV_WEB_PORT=1080
|
|
||||||
- MAILDEV_SMTP_PORT=1025
|
|
||||||
ports:
|
ports:
|
||||||
- "8090:1080"
|
- "1080:1080"
|
||||||
- "8025:1025"
|
- "1025:1025"
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: "json-file"
|
||||||
options:
|
options:
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
init/
|
||||||
Executable
+12
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
databases=("db_test" "db_prod")
|
||||||
|
|
||||||
|
template="template.sql"
|
||||||
|
output="init/init.sql"
|
||||||
|
|
||||||
|
> "$output"
|
||||||
|
for database in "${databases[@]}"; do
|
||||||
|
sed "s/\${database}/$database/g" "$template" >> "$output"
|
||||||
|
echo "" >> "$output"
|
||||||
|
done
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
CREATE DATABASE IF NOT EXISTS db;
|
CREATE DATABASE IF NOT EXISTS ${database};
|
||||||
USE db;
|
USE ${database};
|
||||||
|
|
||||||
-- Table: User
|
-- Table: User
|
||||||
CREATE TABLE IF NOT EXISTS `user`
|
CREATE TABLE IF NOT EXISTS `user`
|
||||||
@@ -55,8 +55,8 @@ CREATE TABLE IF NOT EXISTS recovery_password_token
|
|||||||
FOREIGN KEY (user_id) REFERENCES `user` (id)
|
FOREIGN KEY (user_id) REFERENCES `user` (id)
|
||||||
);
|
);
|
||||||
|
|
||||||
DELIMITER //
|
# DELIMITER //
|
||||||
CREATE TRIGGER expires_at BEFORE INSERT ON recovery_password_token FOR EACH ROW
|
# CREATE TRIGGER expires_at BEFORE INSERT ON recovery_password_token FOR EACH ROW
|
||||||
BEGIN
|
# BEGIN
|
||||||
SET NEW.`expires_at` = TIMESTAMPADD(MINUTE, 15, CURRENT_TIMESTAMP);
|
# SET NEW.`expires_at` = TIMESTAMPADD(MINUTE, 15, CURRENT_TIMESTAMP);
|
||||||
END;//
|
# END;//
|
||||||
@@ -34,6 +34,13 @@
|
|||||||
<artifactId>gson</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
<version>2.8.6</version>
|
<version>2.8.6</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.github.cdimascio</groupId>
|
||||||
|
<artifactId>dotenv-java</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>mysql</groupId>
|
<groupId>mysql</groupId>
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
@@ -60,10 +67,11 @@
|
|||||||
|
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-war-plugin</artifactId>
|
<artifactId>maven-war-plugin</artifactId>
|
||||||
<version>3.3.2</version>
|
<version>3.3.2</version>
|
||||||
</plugin> </plugins>
|
</plugin>
|
||||||
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
@@ -15,11 +15,11 @@ public class Main {
|
|||||||
// DAO<Player> daoJpaPlayer = jpaDaoFactory.getDAOPlayer();
|
// DAO<Player> daoJpaPlayer = jpaDaoFactory.getDAOPlayer();
|
||||||
|
|
||||||
// Contenu de la BD au début
|
// Contenu de la BD au début
|
||||||
// User[] users = daoJpaUser.findAll();
|
User[] users = daoJpaUser.findAll();
|
||||||
// for (User u : users) {
|
for (User u : users) {
|
||||||
// System.out.println(u.toString());
|
System.out.println(u.toString());
|
||||||
// }
|
}
|
||||||
// System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
// // Ajout d'User :
|
// // Ajout d'User :
|
||||||
// Calendar cal1 = Calendar.getInstance();
|
// Calendar cal1 = Calendar.getInstance();
|
||||||
@@ -33,12 +33,12 @@ public class Main {
|
|||||||
// daoJpaUser.create(user1);
|
// daoJpaUser.create(user1);
|
||||||
// daoJpaUser.create(user2);
|
// daoJpaUser.create(user2);
|
||||||
|
|
||||||
System.out.println("test récupération user");
|
// System.out.println("test récupération user");
|
||||||
User[] users2 = daoJpaUser.findByField("username", "Kevin");
|
// User[] users2 = daoJpaUser.findByField("username", "Kevin");
|
||||||
for (User user : users2) {
|
// for (User user : users2) {
|
||||||
System.out.println(user.toString());
|
// System.out.println(user.toString());
|
||||||
}
|
// }
|
||||||
System.out.println("fin test");
|
// System.out.println("fin test");
|
||||||
} catch (DAOException e) {
|
} catch (DAOException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package uppa.project.provider;
|
||||||
|
|
||||||
|
import io.github.cdimascio.dotenv.Dotenv;
|
||||||
|
|
||||||
|
public class DotenvProvider {
|
||||||
|
static Dotenv instance;
|
||||||
|
|
||||||
|
public static Dotenv getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = Dotenv.configure().load();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,8 +18,7 @@ import jakarta.persistence.Persistence;
|
|||||||
* @see jakarta.persistence.EntityManager
|
* @see jakarta.persistence.EntityManager
|
||||||
*/
|
*/
|
||||||
public final class EntityManagerProvider {
|
public final class EntityManagerProvider {
|
||||||
|
private static final String PERSISTANCE_UNIT_NAME = DotenvProvider.getInstance().get("PERSISTANCE_UNIT_NAME");
|
||||||
private final static String PERSISTANCE_UNIT_NAME = "db";
|
|
||||||
private static EntityManager instance;
|
private static EntityManager instance;
|
||||||
private static EntityManagerFactory factory;
|
private static EntityManagerFactory factory;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
|
xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
|
||||||
version="3.0">
|
version="3.0">
|
||||||
<persistence-unit name="db">
|
<persistence-unit name="prod">
|
||||||
|
|
||||||
<class>uppa.project.pojo.User</class>
|
<class>uppa.project.pojo.User</class>
|
||||||
<class>uppa.project.pojo.Game</class>
|
<class>uppa.project.pojo.Game</class>
|
||||||
@@ -12,11 +12,29 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
|
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
|
||||||
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:6033/db?useSSL=false&allowPublicKeyRetrieval=true"/>
|
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/db_prod?useSSL=false&allowPublicKeyRetrieval=true"/>
|
||||||
<property name="jakarta.persistence.jdbc.user" value="root"/>
|
<property name="jakarta.persistence.jdbc.user" value="root"/>
|
||||||
<property name="jakarta.persistence.jdbc.password" value="root"/>
|
<property name="jakarta.persistence.jdbc.password" value="root"/>
|
||||||
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
|
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</persistence-unit>
|
</persistence-unit>
|
||||||
|
|
||||||
|
<persistence-unit name="test">
|
||||||
|
|
||||||
|
<class>uppa.project.pojo.User</class>
|
||||||
|
<class>uppa.project.pojo.Game</class>
|
||||||
|
<class>uppa.project.pojo.Player</class>
|
||||||
|
<class>uppa.project.pojo.RecoveryPasswordToken</class>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<property name="jakarta.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
|
||||||
|
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/db_test?useSSL=false&allowPublicKeyRetrieval=true"/>
|
||||||
|
<property name="jakarta.persistence.jdbc.user" value="root"/>
|
||||||
|
<property name="jakarta.persistence.jdbc.password" value="root"/>
|
||||||
|
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</persistence-unit>
|
||||||
|
|
||||||
</persistence>
|
</persistence>
|
||||||
|
|||||||
Reference in New Issue
Block a user