mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-14 01:21:49 +00:00
feat(DevWeb): Support multiple databases (test, prod)
This commit is contained in:
@@ -2,13 +2,12 @@ version: '2'
|
||||
services:
|
||||
mysql-db:
|
||||
image: mysql:latest
|
||||
volumes:
|
||||
- ./mysql:/docker-entrypoint-initdb.d
|
||||
environment:
|
||||
- MYSQL_DATABASE=db
|
||||
- MYSQL_ROOT_PASSWORD=root
|
||||
volumes:
|
||||
- ./mysql/init:/docker-entrypoint-initdb.d
|
||||
ports:
|
||||
- "6033:3306"
|
||||
- "3306:3306"
|
||||
expose:
|
||||
- "3306"
|
||||
|
||||
@@ -16,12 +15,10 @@ services:
|
||||
image: maildev/maildev
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
- MAILDEV_WEB_PORT=1080
|
||||
- MAILDEV_SMTP_PORT=1025
|
||||
ports:
|
||||
- "8090:1080"
|
||||
- "8025:1025"
|
||||
- "1080:1080"
|
||||
- "1025:1025"
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "1m"
|
||||
max-size: "1m"
|
||||
|
||||
@@ -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;
|
||||
USE db;
|
||||
CREATE DATABASE IF NOT EXISTS ${database};
|
||||
USE ${database};
|
||||
|
||||
-- Table: 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)
|
||||
);
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER expires_at BEFORE INSERT ON recovery_password_token FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.`expires_at` = TIMESTAMPADD(MINUTE, 15, CURRENT_TIMESTAMP);
|
||||
END;//
|
||||
# DELIMITER //
|
||||
# CREATE TRIGGER expires_at BEFORE INSERT ON recovery_password_token FOR EACH ROW
|
||||
# BEGIN
|
||||
# SET NEW.`expires_at` = TIMESTAMPADD(MINUTE, 15, CURRENT_TIMESTAMP);
|
||||
# END;//
|
||||
@@ -34,6 +34,13 @@
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.8.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.github.cdimascio</groupId>
|
||||
<artifactId>dotenv-java</artifactId>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
@@ -60,10 +67,11 @@
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>3.3.2</version>
|
||||
</plugin> </plugins>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
</project>
|
||||
@@ -15,11 +15,11 @@ public class Main {
|
||||
// DAO<Player> daoJpaPlayer = jpaDaoFactory.getDAOPlayer();
|
||||
|
||||
// Contenu de la BD au début
|
||||
// User[] users = daoJpaUser.findAll();
|
||||
// for (User u : users) {
|
||||
// System.out.println(u.toString());
|
||||
// }
|
||||
// System.out.println();
|
||||
User[] users = daoJpaUser.findAll();
|
||||
for (User u : users) {
|
||||
System.out.println(u.toString());
|
||||
}
|
||||
System.out.println();
|
||||
|
||||
// // Ajout d'User :
|
||||
// Calendar cal1 = Calendar.getInstance();
|
||||
@@ -33,12 +33,12 @@ public class Main {
|
||||
// daoJpaUser.create(user1);
|
||||
// daoJpaUser.create(user2);
|
||||
|
||||
System.out.println("test récupération user");
|
||||
User[] users2 = daoJpaUser.findByField("username", "Kevin");
|
||||
for (User user : users2) {
|
||||
System.out.println(user.toString());
|
||||
}
|
||||
System.out.println("fin test");
|
||||
// System.out.println("test récupération user");
|
||||
// User[] users2 = daoJpaUser.findByField("username", "Kevin");
|
||||
// for (User user : users2) {
|
||||
// System.out.println(user.toString());
|
||||
// }
|
||||
// System.out.println("fin test");
|
||||
} catch (DAOException 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
|
||||
*/
|
||||
public final class EntityManagerProvider {
|
||||
|
||||
private final static String PERSISTANCE_UNIT_NAME = "db";
|
||||
private static final String PERSISTANCE_UNIT_NAME = DotenvProvider.getInstance().get("PERSISTANCE_UNIT_NAME");
|
||||
private static EntityManager instance;
|
||||
private static EntityManagerFactory factory;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
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"
|
||||
version="3.0">
|
||||
<persistence-unit name="db">
|
||||
<persistence-unit name="prod">
|
||||
|
||||
<class>uppa.project.pojo.User</class>
|
||||
<class>uppa.project.pojo.Game</class>
|
||||
@@ -12,11 +12,29 @@
|
||||
|
||||
<properties>
|
||||
<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.password" value="root"/>
|
||||
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
|
||||
</properties>
|
||||
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user