diff --git a/.gitignore b/.gitignore index e7f893e1a..0efd5c5cc 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,7 @@ assets/node_modules/ #PHPunit /.phpunit.result.cache +/tmp/ +/docker-compose.override.yml +/.user.ini +/logs/ diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..814157a76 --- /dev/null +++ b/Makefile @@ -0,0 +1,76 @@ +DOCKER_COMPOSE:= docker compose +CNTR_NAME_SOLR := solr +CNTR_NAME_PHP := php-fpm +CNTR_APP_DIR := /var/www/htdocs +CNTR_APP_USER := www-data + +SOLR_COLLECTION_CONFIG := /opt/configsets/episciences +MYSQL_CONNECT_EPISCIENCES:= mysql -u root -proot -h 127.0.0.1 -P 33060 episciences +MYSQL_CONNECT_AUTH:= mysql -u root -proot -h 127.0.0.1 -P 33062 cas_users + +.PHONY: build up down collection index clean help + +help: ## Display this help + @echo "Available targets:" + @grep -E '^[a-zA-Z_-]+:.*##' Makefile | awk 'BEGIN {FS = ":.*?## "}; {printf "%-30s %s\n", $$1, $$2}' + +build: ## Build the docker containers + $(DOCKER_COMPOSE) build + +up: ## Start all the docker containers + $(DOCKER_COMPOSE) up -d + @echo "Make sure you have [127.0.0.1 localhost dev.episciences.org oai-dev.episciences.org data-dev.episciences.org] in /etc/hosts" + @echo "Journal : http://dev.episciences.org/" + @echo "OAI-PMH : http://oai-dev.episciences.org/" + @echo "Data : http://data-dev.episciences.org/" + @echo "PhpMyAdmin : http://localhost:8001/" + @echo "Apache Solr : http://localhost:8983/solr" + + +down: ## Stop the docker containers and remove orphans + $(DOCKER_COMPOSE) down --remove-orphans + +collection: up ## Create the Solr collection after starting the containers + @echo "Waiting for Solr container to be ready..." + @docker exec $(CNTR_NAME_SOLR) bash -c "until curl -s http://localhost:8983/solr; do sleep 1; done" + @echo "Solr container is ready. Creating 'episciences' collection..." + @docker exec $(CNTR_NAME_SOLR) solr create_collection -c episciences -d $(SOLR_COLLECTION_CONFIG) + +index: ## Index the content into Solr + @echo "Indexing all content" + $(DOCKER_COMPOSE) exec -u $(CNTR_APP_USER) -w $(CNTR_APP_DIR) php-fpm php scripts/solr/solrJob.php -D % -v + +clean: down ## Clean up unused docker resources + #docker stop $(docker ps -a -q) + docker system prune -f + +load-db-episciences: ## Load an SQL dump from ./tmp/episciences.sql + $(MYSQL_CONNECT_EPISCIENCES) < ./tmp/episciences.sql + +load-db-auth: ## Load an SQL dump from ./tmp/cas_users.sql + $(MYSQL_CONNECT_AUTH) < ./tmp/cas_users.sql + +send-mails: + $(DOCKER_COMPOSE) exec -u $(CNTR_APP_USER) -w $(CNTR_APP_DIR) $(CNTR_NAME_PHP) php scripts/send_mails.php + +composer-install: ## Install composer dependencies + $(DOCKER_COMPOSE) exec -w $(CNTR_APP_DIR) $(CNTR_NAME_PHP) composer install --no-interaction --prefer-dist --optimize-autoloader + +composer-update: ## Update composer dependencies + $(DOCKER_COMPOSE) exec -w $(CNTR_APP_DIR) $(CNTR_NAME_PHP) composer update --no-interaction --prefer-dist --optimize-autoloader + +yarn-encore-production: ## yarn encore production + $(DOCKER_COMPOSE) exec -w $(CNTR_APP_DIR) $(CNTR_NAME_PHP) yarn encore production + +restart-httpd: ## Restart Apache httpd + $(DOCKER_COMPOSE) restart httpd + +restart-php: ## Restart PHP-FPM Container + $(DOCKER_COMPOSE) restart $(CNTR_NAME_PHP) + +merge-pdf-volume: ## merge all pdf from a vid into one pdf + $(DOCKER_COMPOSE) exec -u $(CNTR_APP_USER) -w $(CNTR_APP_DIR) $(CNTR_NAME_PHP) php scripts/mergePdfVol.php --rvcode=$(rvcode) --ignorecache=$(or $(ignorecache),0) --removecache=$(or $(removecache),0) + + +can-i-use-update: ## To be launched when Browserslist: caniuse-lite is outdated. + npx update-browserslist-db@latest \ No newline at end of file diff --git a/docker-compose.override.yml.dist b/docker-compose.override.yml.dist new file mode 100644 index 000000000..a9a171856 --- /dev/null +++ b/docker-compose.override.yml.dist @@ -0,0 +1,126 @@ +services: + solr: + image: solr:9.6 + container_name: solr + ports: + - "8983:8983" + networks: + - search + environment: + ZK_HOST: "zoo:2181" + depends_on: + - zoo + volumes: + - solr_data:/var/solr + - type: bind + source: ./src/solr + target: /opt/configsets + read_only: true + + zoo: + image: zookeeper:3.9 + container_name: zoo + networks: + - search + environment: + ZOO_4LW_COMMANDS_WHITELIST: "mntr,conf,ruok" + + db-episciences: + image: "mysql:8.4" + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + container_name: 'db-episciences' + expose: + - "3306" + ports: + - "33060:3306" + volumes: + - /var/lib/mysql + - type: bind + source: ./src/mysql/docker/episciences/episciences.sql + target: /docker-entrypoint-initdb.d/init.sql + env_file: + - src/mysql/docker/episciences/mysql.env + networks: + - search + + db-indexing: + image: "mysql:8.4" + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + container_name: 'db-indexing' + expose: + - "3306" + ports: + - "33061:3306" + volumes: + - mysql-db-indexing:/var/lib/mysql + - type: bind + source: ./src/mysql/docker/solr/solr_index_queue.sql + target: /docker-entrypoint-initdb.d/init.sql + env_file: + - src/mysql/docker/solr/mysql.env + networks: + - search + + db-auth: + image: "mysql:8.4" + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + container_name: 'db-auth' + expose: + - "3306" + ports: + - "33062:3306" + volumes: + - mysql-db-auth:/var/lib/mysql + - type: bind + source: ./src/mysql/docker/auth/cas_users.sql + target: /docker-entrypoint-initdb.d/init.sql + env_file: + - src/mysql/docker/auth/mysql.env + networks: + - search + + pma: + container_name: 'db-phpmyadmin' + image: "phpmyadmin:latest" + environment: + - "PMA_PMADB=pma" + - "PMA_CONTROLUSER=root" + - "PMA_CONTROLPASS=root" + - "PMA_QUERYHISTORYDB=true" + - "PMA_USER=root" + - "PMA_PASSWORD=root" + - "PMA_ARBITRARY=1" + - "PMA_HOSTS=db-episciences,db-indexing,db-auth" + - "PMA_VERBOSES=episciences,indexing,auth" + - "UPLOAD_LIMIT=2G" + - "MEMORY_LIMIT=1G" + ports: + - "8001:80" + depends_on: + - db-episciences + - db-indexing + - db-auth + links: + - db-episciences + - db-indexing + - db-auth + networks: + - search + + +networks: + search: + driver: bridge + +volumes: + mysql-db-episciences: + mysql-db-indexing: + mysql-db-auth: + solr_data: + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..1f55d345e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,175 @@ +services: + httpd: + image: httpd:2.4-bookworm + container_name: httpd + build: + context: . + dockerfile: src/apache/Dockerfile + restart: always + volumes: + - ./src/apache/vhost.conf:/usr/local/apache2/conf/extra/episciences.conf + - .:/var/www/htdocs + - ./data:/var/www/data + - ./cache:/var/www/cache + - ./logs:/var/www/logs + ports: + - "80:80" # Apache listens on port 80 internally, mapped to 8888 on the host + depends_on: + - php-fpm + - db-episciences + - db-indexing + - db-auth + networks: + - epi-network + command: > + /bin/sh -c "chown -R www-data:www-data /var/www/data /var/www/cache /var/www/logs && httpd-foreground" + + + php-fpm: + container_name: php-fpm + build: + context: . + dockerfile: src/php-fpm/Dockerfile + ports: + - "9003:9003" # Xdebug + restart: always + volumes: + - .:/var/www/htdocs + - ./data:/var/www/data + - ./cache:/var/www/cache + - ./logs:/var/www/logs + - ./src/php-fpm/php-fpm.conf:/usr/local/etc/php-fpm.d/zz-custom.conf + - ./logs/xdebug.log:/var/www/logs + environment: + - PHP_FPM_LISTEN_PORT=9000 + - XDEBUG_MODE=debug + - XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003 + expose: + - "9000" # Expose internal port 9000 + networks: + - epi-network + + solr: + image: solr:9.6 + container_name: solr + ports: + - "8983:8983" + networks: + - epi-network + environment: + ZK_HOST: "zoo:2181" + depends_on: + - zoo + volumes: + - solr_data:/var/solr + - type: bind + source: ./src/solr + target: /opt/configsets + read_only: true + + zoo: + image: zookeeper:3.9 + container_name: zoo + networks: + - epi-network + environment: + ZOO_4LW_COMMANDS_WHITELIST: "mntr,conf,ruok" + + db-episciences: + image: "mysql:8.4" + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + container_name: 'db-episciences' + expose: + - "3306" + ports: + - "33060:3306" + volumes: + - mysql-db-episciences:/var/lib/mysql + - type: bind + source: ./src/mysql/docker/episciences/episciences.sql + target: /docker-entrypoint-initdb.d/init.sql + env_file: + - src/mysql/docker/episciences/mysql.env + networks: + - epi-network + + db-indexing: + image: "mysql:8.4" + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + container_name: 'db-indexing' + expose: + - "3306" + ports: + - "33061:3306" + volumes: + - mysql-db-indexing:/var/lib/mysql + - type: bind + source: ./src/mysql/docker/solr/solr_index_queue.sql + target: /docker-entrypoint-initdb.d/init.sql + env_file: + - src/mysql/docker/solr/mysql.env + networks: + - epi-network + + db-auth: + image: "mysql:8.4" + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + container_name: 'db-auth' + expose: + - "3306" + ports: + - "33062:3306" + volumes: + - mysql-db-auth:/var/lib/mysql + - type: bind + source: ./src/mysql/docker/auth/cas_users.sql + target: /docker-entrypoint-initdb.d/init.sql + env_file: + - src/mysql/docker/auth/mysql.env + networks: + - epi-network + + pma: + container_name: 'db-phpmyadmin' + image: "phpmyadmin:latest" + environment: + - "PMA_PMADB=pma" + - "PMA_CONTROLUSER=root" + - "PMA_CONTROLPASS=root" + - "PMA_QUERYHISTORYDB=true" + - "PMA_USER=root" + - "PMA_PASSWORD=root" + - "PMA_ARBITRARY=1" + - "PMA_HOSTS=db-episciences,db-indexing,db-auth" + - "PMA_VERBOSES=episciences,indexing,auth" + - "UPLOAD_LIMIT=2G" + - "MEMORY_LIMIT=1G" + ports: + - "8001:80" + depends_on: + - db-episciences + - db-indexing + - db-auth + links: + - db-episciences + - db-indexing + - db-auth + networks: + - epi-network + +networks: + epi-network: + driver: bridge + +volumes: + mysql-db-episciences: + mysql-db-indexing: + mysql-db-auth: + solr_data: + diff --git a/src/apache/Dockerfile b/src/apache/Dockerfile new file mode 100644 index 000000000..bf4e1376a --- /dev/null +++ b/src/apache/Dockerfile @@ -0,0 +1,22 @@ +FROM httpd:2.4-bookworm + +# Install Vim and update packages +RUN apt-get update && apt-get dist-upgrade -y && apt-get -y install vim && apt-get clean + +# Enable rewrite and headers modules +RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf && \ + sed -i '/LoadModule headers_module/s/^#//g' /usr/local/apache2/conf/httpd.conf && \ + sed -i '/LoadModule proxy_module/s/^#//g' /usr/local/apache2/conf/httpd.conf && \ + sed -i '/LoadModule proxy_fcgi_module/s/^#//g' /usr/local/apache2/conf/httpd.conf && \ + sed -i '/LoadModule setenvif_module/s/^#//g' /usr/local/apache2/conf/httpd.conf + + +COPY ./src/apache/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +CMD ["httpd-foreground"] + + +#RUN mkdir -p /var/www && chown -R www-data: /var/www/data + + diff --git a/src/apache/entrypoint.sh b/src/apache/entrypoint.sh new file mode 100644 index 000000000..494e024ce --- /dev/null +++ b/src/apache/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash +# Optionally, include the vhost in the main configuration +echo "Include conf/extra/episciences.conf" >> /usr/local/apache2/conf/httpd.conf +#chown -R www-data:www-data /var/www/data /var/www/cache /var/www/logs +exec "$@" + diff --git a/src/apache/vhost.conf b/src/apache/vhost.conf new file mode 100644 index 000000000..123740f00 --- /dev/null +++ b/src/apache/vhost.conf @@ -0,0 +1,88 @@ +# A Journal + + ServerAdmin contact@example.org + DocumentRoot /var/www/htdocs/public/ + SetEnv APPLICATION_ENV development + + ServerName dev.episciences.org + SetEnv RVCODE dev + Alias /public /var/www/htdocs/data/dev/public + + DirectoryIndex index.php + + + # Pass PHP scripts to the PHP-FPM container via TCP + + SetHandler "proxy:fcgi://php-fpm:9000" + + + + Options Indexes MultiViews FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog /usr/local/apache2/logs/error.log + CustomLog /usr/local/apache2/logs/access.log combined + + +# OAI + + ServerAdmin contact@example.org + DocumentRoot /var/www/htdocs/public/ + SetEnv APPLICATION_ENV development + + ServerName oai-dev.episciences.org + SetEnv RVCODE oai + Alias /public /var/www/htdocs/data/dev/public + + DirectoryIndex index.php + + + # Pass PHP scripts to the PHP-FPM container via TCP + + SetHandler "proxy:fcgi://php-fpm:9000" + + + + Options Indexes MultiViews FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog /usr/local/apache2/logs/oai-error.log + CustomLog /usr/local/apache2/logs/oai-access.log combined + + + +# Portal + + ServerAdmin contact@example.org + DocumentRoot /var/www/htdocs/public/ + SetEnv APPLICATION_ENV development + + ServerName data-dev.episciences.org + SetEnv RVCODE portal + Alias /public /var/www/htdocs/data/dev/public + + DirectoryIndex index.php + + + # Pass PHP scripts to the PHP-FPM container via TCP + + SetHandler "proxy:fcgi://php-fpm:9000" + + + + Options Indexes MultiViews FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog /usr/local/apache2/logs/portal-error.log + CustomLog /usr/local/apache2/logs/portal-access.log combined + + + + + diff --git a/src/mysql/SetupDumps/README.md b/src/mysql/SetupDumps/README.md new file mode 100644 index 000000000..91dfe3a35 --- /dev/null +++ b/src/mysql/SetupDumps/README.md @@ -0,0 +1 @@ +See docker/* for each database diff --git a/src/mysql/docker/auth/cas_users.sql b/src/mysql/docker/auth/cas_users.sql new file mode 100644 index 000000000..ab3cf5b25 --- /dev/null +++ b/src/mysql/docker/auth/cas_users.sql @@ -0,0 +1,73 @@ +-- Generation Time: Jun 14, 2024 at 10:03 AM + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `CAS_users` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `T_UTILISATEURS` +-- + +CREATE TABLE `T_UTILISATEURS` ( + `UID` int(11) UNSIGNED NOT NULL, + `USERNAME` varchar(100) NOT NULL, + `PASSWORD` varchar(128) NOT NULL, + `EMAIL` varchar(320) NOT NULL COMMENT 'http://tools.ietf.org/html/rfc3696#section-3', + `CIV` varchar(255) DEFAULT NULL, + `LASTNAME` varchar(100) NOT NULL, + `FIRSTNAME` varchar(100) DEFAULT NULL, + `MIDDLENAME` varchar(100) DEFAULT NULL, + `URL` varchar(500) DEFAULT NULL, + `PHONE` varchar(50) DEFAULT NULL, + `FAX` varchar(50) DEFAULT NULL, + `TIME_REGISTERED` timestamp NULL DEFAULT NULL COMMENT 'Date création du compte', + `TIME_MODIFIED` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date modification du compte', + `PHOTO` mediumblob, + `FTP_HOME` varchar(255) DEFAULT NULL COMMENT 'Chemin du home FTP', + `FTP_LAST_AUTH` datetime DEFAULT NULL COMMENT 'Dernière authentification par FTP', + `FTP_LAST_USE` datetime DEFAULT NULL COMMENT 'Dernière utilisation du FTP', + `VALID` tinyint(1) NOT NULL DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Comptes utilisateurs pour CAS' ROW_FORMAT=DYNAMIC; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `T_UTILISATEURS` +-- +ALTER TABLE `T_UTILISATEURS` + ADD PRIMARY KEY (`UID`), + ADD UNIQUE KEY `U_USERNAME` (`USERNAME`), + ADD KEY `PASSWORD` (`PASSWORD`), + ADD KEY `VALID` (`VALID`), + ADD KEY `FIRSTNAME` (`FIRSTNAME`), + ADD KEY `LASTNAME` (`LASTNAME`), + ADD KEY `EMAIL` (`EMAIL`(100)); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `T_UTILISATEURS` +-- +ALTER TABLE `T_UTILISATEURS` + MODIFY `UID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; \ No newline at end of file diff --git a/src/mysql/docker/auth/mysql.env b/src/mysql/docker/auth/mysql.env new file mode 100644 index 000000000..88d10ed68 --- /dev/null +++ b/src/mysql/docker/auth/mysql.env @@ -0,0 +1,5 @@ +MYSQL_ROOT_PASSWORD=root +MYSQL_HOST=cas_users +MYSQL_USER=cas_users +MYSQL_PASSWORD=cas_users +MYSQL_DATABASE=cas_users \ No newline at end of file diff --git a/src/mysql/docker/episciences/episciences.sql b/src/mysql/docker/episciences/episciences.sql new file mode 100644 index 000000000..1a55604f5 --- /dev/null +++ b/src/mysql/docker/episciences/episciences.sql @@ -0,0 +1,1384 @@ +-- Generation Time: Jun 13, 2024 at 04:01 PM +-- Server version: 8.0.29 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `episciences` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `authors` +-- + +CREATE TABLE `authors` ( + `idauthors` int UNSIGNED NOT NULL, + `authors` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'json', + `paperid` int UNSIGNED NOT NULL, + `date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `doi_queue` +-- + +CREATE TABLE `doi_queue` ( + `id_doi_queue` int UNSIGNED NOT NULL, + `paperid` int UNSIGNED NOT NULL, + `doi_status` enum('assigned','requested','public','') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'assigned', + `date_init` datetime NOT NULL, + `date_updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `doi_queue_volumes` +-- + +CREATE TABLE `doi_queue_volumes` ( + `id` int UNSIGNED NOT NULL, + `vid` int UNSIGNED NOT NULL, + `doi_status` enum('assigned','requested','public','') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'assigned', + `date_init` datetime NOT NULL, + `date_updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `MAIL_LOG` +-- + +CREATE TABLE `MAIL_LOG` ( + `ID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED DEFAULT NULL, + `FROM` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `REPLYTO` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `TO` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CC` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + `BCC` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + `SUBJECT` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `CONTENT` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `FILES` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `WHEN` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `MAIL_TEMPLATE` +-- + +CREATE TABLE `MAIL_TEMPLATE` ( + `ID` int UNSIGNED NOT NULL, + `PARENTID` int UNSIGNED DEFAULT NULL, + `RVID` int UNSIGNED DEFAULT NULL, + `RVCODE` varchar(25) DEFAULT NULL, + `KEY` varchar(255) NOT NULL, + `TYPE` varchar(255) NOT NULL, + `POSITION` int UNSIGNED DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `metadata_sources` +-- + +CREATE TABLE `metadata_sources` ( + `id` int UNSIGNED NOT NULL, + `name` varchar(255) NOT NULL, + `type` enum('repository','metadataRepository','dataverse','user') CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'enabled by default', + `identifier` varchar(50) DEFAULT NULL COMMENT 'OAI identifier', + `base_url` varchar(100) DEFAULT NULL COMMENT 'OAI base url', + `doi_prefix` varchar(10) NOT NULL, + `api_url` varchar(100) NOT NULL, + `doc_url` varchar(150) NOT NULL COMMENT 'See the document''s page on', + `paper_url` varchar(100) NOT NULL COMMENT 'PDF' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `NEWS` +-- + +CREATE TABLE `NEWS` ( + `NEWSID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL, + `UID` int UNSIGNED NOT NULL, + `LINK` varchar(2000) NOT NULL, + `ONLINE` tinyint UNSIGNED NOT NULL, + `DATE_POST` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `PAPERS` +-- + +CREATE TABLE `PAPERS` ( + `DOCID` int UNSIGNED NOT NULL COMMENT 'Unique Identifier for each submission', + `PAPERID` int UNSIGNED DEFAULT NULL COMMENT 'Common Identifier for several versions of a paper', + `DOI` varchar(250) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'PID of accepted and published papers', + `TYPE` json DEFAULT NULL, + `RVID` int UNSIGNED NOT NULL COMMENT 'Link to Journal ID', + `VID` int UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Link to Volume ID', + `SID` int UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Link to Section ID', + `UID` int UNSIGNED NOT NULL COMMENT 'Link to User ID', + `STATUS` int UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Status of the submission', + `IDENTIFIER` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL COMMENT 'Open Repository Identifier', + `VERSION` float UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Version identifier of a submission', + `REPOID` int UNSIGNED NOT NULL COMMENT 'Link to Repository ID', + `RECORD` text CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL COMMENT 'Text of Metadata Record from Open repository ', + `CONCEPT_IDENTIFIER` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 'Zenodo ID This identifier represents all versions', + `FLAG` enum('submitted','imported') CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL DEFAULT 'submitted' COMMENT 'Submission source', + `PASSWORD` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT 'Encrypted temporary password for sharing arXiv submissions', + `WHEN` datetime NOT NULL COMMENT 'Timestamp of insertion in database', + `SUBMISSION_DATE` datetime NOT NULL COMMENT 'Timestamp of the 1st submission - common to all versions of a Paper', + `MODIFICATION_DATE` datetime DEFAULT NULL COMMENT 'Timestamp of the update of the line in database', + `PUBLICATION_DATE` datetime DEFAULT NULL COMMENT 'Timestamp of the publication date of a paper' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Submissions'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_citations` +-- + +CREATE TABLE `paper_citations` ( + `id` int UNSIGNED NOT NULL, + `citation` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Json Citations.php', + `docid` int UNSIGNED NOT NULL, + `source_id` int UNSIGNED NOT NULL, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_classifications` +-- + +CREATE TABLE `paper_classifications` ( + `id` int UNSIGNED NOT NULL, + `paperid` int UNSIGNED NOT NULL, + `classification` varchar(200) NOT NULL, + `type` varchar(50) NOT NULL, + `source_id` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `PAPER_COMMENTS` +-- + +CREATE TABLE `PAPER_COMMENTS` ( + `PCID` int UNSIGNED NOT NULL, + `PARENTID` int UNSIGNED DEFAULT NULL, + `TYPE` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED NOT NULL, + `UID` int UNSIGNED NOT NULL, + `MESSAGE` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + `FILE` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + `WHEN` datetime NOT NULL, + `DEADLINE` date DEFAULT NULL, + `OPTIONS` text +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Suivi des demandes de modification sur un papier'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_conflicts` +-- + +CREATE TABLE `paper_conflicts` ( + `cid` int UNSIGNED NOT NULL, + `paper_id` int UNSIGNED NOT NULL, + `by` int UNSIGNED NOT NULL COMMENT 'uid', + `answer` enum('yes','no') CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL, + `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='conflicts handling'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_datasets` +-- + +CREATE TABLE `paper_datasets` ( + `id` int NOT NULL, + `doc_id` int NOT NULL, + `code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Identifier type', + `value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `link` varchar(750) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `source_id` int NOT NULL, + `relationship` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `id_paper_datasets_meta` int UNSIGNED DEFAULT NULL, + `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_datasets_meta` +-- + +CREATE TABLE `paper_datasets_meta` ( + `id` int UNSIGNED NOT NULL, + `metatext` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'JSON text', + `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_files` +-- + +CREATE TABLE `paper_files` ( + `id` int UNSIGNED NOT NULL, + `doc_id` int UNSIGNED NOT NULL, + `source` int NOT NULL DEFAULT '4', + `file_name` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `checksum` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `checksum_type` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'md5', + `self_link` varchar(750) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `file_size` bigint UNSIGNED NOT NULL, + `file_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `time_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_licences` +-- + +CREATE TABLE `paper_licences` ( + `id` int UNSIGNED NOT NULL, + `licence` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `docid` int UNSIGNED NOT NULL, + `source_id` int UNSIGNED NOT NULL, + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `PAPER_LOG` +-- + +CREATE TABLE `PAPER_LOG` ( + `LOGID` int UNSIGNED NOT NULL, + `PAPERID` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED NOT NULL, + `UID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL, + `ACTION` varchar(50) NOT NULL, + `DETAIL` mediumtext, + `FILE` varchar(150) DEFAULT NULL, + `DATE` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Life of papers'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `paper_projects` +-- + +CREATE TABLE `paper_projects` ( + `idproject` int UNSIGNED NOT NULL, + `funding` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Json of funding', + `paperid` int UNSIGNED NOT NULL, + `source_id` int UNSIGNED NOT NULL, + `date_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `PAPER_SETTINGS` +-- + +CREATE TABLE `PAPER_SETTINGS` ( + `PSID` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED NOT NULL, + `SETTING` varchar(100) NOT NULL, + `VALUE` varchar(250) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `PAPER_STAT` +-- + +CREATE TABLE `PAPER_STAT` ( + `DOCID` int UNSIGNED NOT NULL, + `CONSULT` enum('notice','file','oai','api') NOT NULL DEFAULT 'notice', + `IP` int UNSIGNED NOT NULL, + `ROBOT` tinyint UNSIGNED NOT NULL DEFAULT '0', + `AGENT` varchar(2000) DEFAULT NULL, + `DOMAIN` varchar(100) DEFAULT NULL, + `CONTINENT` varchar(100) DEFAULT NULL, + `COUNTRY` varchar(100) DEFAULT NULL, + `CITY` varchar(100) DEFAULT NULL, + `LAT` float DEFAULT NULL, + `LON` float DEFAULT NULL, + `HIT` date NOT NULL, + `COUNTER` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `refresh_tokens` +-- + +CREATE TABLE `refresh_tokens` ( + `id` int NOT NULL, + `refreshToken` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `username` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `rvid` int UNSIGNED DEFAULT NULL, + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `valid` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `REMINDERS` +-- + +CREATE TABLE `REMINDERS` ( + `ID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED DEFAULT NULL, + `TYPE` tinyint UNSIGNED DEFAULT NULL, + `DELAY` smallint UNSIGNED NOT NULL, + `REPETITION` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `RECIPIENT` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'reviewer' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `REVIEW` +-- + +CREATE TABLE `REVIEW` ( + `RVID` int UNSIGNED NOT NULL, + `CODE` varchar(50) NOT NULL, + `NAME` varchar(2000) NOT NULL, + `STATUS` smallint UNSIGNED NOT NULL DEFAULT '0', + `CREATION` datetime NOT NULL, + `PIWIKID` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Basic journal informations'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `REVIEWER_ALIAS` +-- + +CREATE TABLE `REVIEWER_ALIAS` ( + `UID` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED NOT NULL, + `ALIAS` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `REVIEWER_POOL` +-- + +CREATE TABLE `REVIEWER_POOL` ( + `RVID` int UNSIGNED NOT NULL, + `VID` int UNSIGNED NOT NULL DEFAULT '0', + `UID` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `REVIEWER_REPORT` +-- + +CREATE TABLE `REVIEWER_REPORT` ( + `ID` int UNSIGNED NOT NULL, + `UID` int UNSIGNED NOT NULL, + `ONBEHALF_UID` int UNSIGNED DEFAULT NULL COMMENT 'Mis à jour [!= de NULL] uniquement si l’évaluation est faite à la place de relecteur UID', + `DOCID` int UNSIGNED NOT NULL, + `STATUS` int UNSIGNED NOT NULL, + `CREATION_DATE` datetime NOT NULL, + `UPDATE_DATE` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `REVIEW_SETTING` +-- + +CREATE TABLE `REVIEW_SETTING` ( + `RVID` int UNSIGNED NOT NULL, + `SETTING` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci NOT NULL, + `VALUE` text CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci, + `TIME` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Journal configurations'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `SECTION` +-- + +CREATE TABLE `SECTION` ( + `SID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL, + `POSITION` int UNSIGNED NOT NULL, + `titles` json DEFAULT NULL, + `descriptions` json DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `SECTION_SETTING` +-- + +CREATE TABLE `SECTION_SETTING` ( + `SID` int UNSIGNED NOT NULL, + `SETTING` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci NOT NULL, + `VALUE` text CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `STAT_TEMP` +-- + +CREATE TABLE `STAT_TEMP` ( + `VISITID` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED NOT NULL, + `IP` int UNSIGNED NOT NULL, + `HTTP_USER_AGENT` varchar(2000) CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci NOT NULL, + `DHIT` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `CONSULT` enum('notice','file','oai') CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'notice' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci COMMENT='Statistique de consultation journalière temporaire'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER` +-- + +CREATE TABLE `USER` ( + `UID` int UNSIGNED NOT NULL, + `LANGUEID` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL DEFAULT 'fr' COMMENT 'Account language code', + `SCREEN_NAME` varchar(250) NOT NULL, + `USERNAME` varchar(100) NOT NULL, + `API_PASSWORD` varchar(255) NOT NULL, + `EMAIL` varchar(320) NOT NULL, + `CIV` varchar(255) DEFAULT NULL, + `LASTNAME` varchar(100) NOT NULL, + `FIRSTNAME` varchar(100) DEFAULT NULL, + `MIDDLENAME` varchar(100) DEFAULT NULL, + `ORCID` varchar(19) DEFAULT NULL, + `ADDITIONAL_PROFILE_INFORMATION` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci, + `REGISTRATION_DATE` timestamp NULL DEFAULT NULL COMMENT 'Date the profile was created', + `MODIFICATION_DATE` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Date the profile was updated', + `IS_VALID` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Is account enabled' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_ASSIGNMENT` +-- + +CREATE TABLE `USER_ASSIGNMENT` ( + `ID` int UNSIGNED NOT NULL, + `INVITATION_ID` int UNSIGNED DEFAULT NULL, + `RVID` int UNSIGNED NOT NULL, + `ITEMID` int UNSIGNED NOT NULL, + `ITEM` varchar(50) NOT NULL DEFAULT 'paper', + `UID` int UNSIGNED NOT NULL, + `TMP_USER` tinyint UNSIGNED NOT NULL DEFAULT '0', + `ROLEID` varchar(50) NOT NULL, + `STATUS` varchar(20) NOT NULL, + `WHEN` datetime NOT NULL, + `DEADLINE` datetime DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_INVITATION` +-- + +CREATE TABLE `USER_INVITATION` ( + `ID` int UNSIGNED NOT NULL, + `AID` int UNSIGNED NOT NULL COMMENT 'Assignment ID', + `STATUS` varchar(50) NOT NULL DEFAULT 'pending', + `TOKEN` varchar(40) DEFAULT NULL, + `SENDER_UID` int UNSIGNED DEFAULT NULL, + `SENDING_DATE` datetime NOT NULL, + `EXPIRATION_DATE` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_INVITATION_ANSWER` +-- + +CREATE TABLE `USER_INVITATION_ANSWER` ( + `ID` int UNSIGNED NOT NULL COMMENT 'Invitation ID', + `ANSWER` varchar(10) NOT NULL, + `ANSWER_DATE` datetime NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_INVITATION_ANSWER_DETAIL` +-- + +CREATE TABLE `USER_INVITATION_ANSWER_DETAIL` ( + `ID` int UNSIGNED NOT NULL COMMENT 'Invitation ID', + `NAME` varchar(30) NOT NULL, + `VALUE` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_MERGE` +-- + +CREATE TABLE `USER_MERGE` ( + `MID` int UNSIGNED NOT NULL, + `TOKEN` varchar(40) DEFAULT NULL, + `MERGER_UID` int UNSIGNED NOT NULL COMMENT 'CASID du compte à fusionner', + `KEEPER_UID` int UNSIGNED NOT NULL COMMENT 'CASID du compte à conserver', + `DETAIL` text, + `DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_ROLES` +-- + +CREATE TABLE `USER_ROLES` ( + `UID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL DEFAULT '0', + `ROLEID` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `USER_TMP` +-- + +CREATE TABLE `USER_TMP` ( + `ID` int UNSIGNED NOT NULL, + `EMAIL` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `FIRSTNAME` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `LASTNAME` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, + `LANG` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `VOLUME` +-- + +CREATE TABLE `VOLUME` ( + `VID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL, + `POSITION` int UNSIGNED NOT NULL, + `BIB_REFERENCE` varchar(255) DEFAULT NULL COMMENT 'Volume bibliographical reference', + `titles` json DEFAULT NULL, + `descriptions` json DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='Journal volumes'; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `VOLUME_METADATA` +-- + +CREATE TABLE `VOLUME_METADATA` ( + `ID` int UNSIGNED NOT NULL, + `VID` int UNSIGNED NOT NULL, + `POSITION` int UNSIGNED NOT NULL, + `CONTENT` json DEFAULT NULL COMMENT 'Metadata decsriptions', + `FILE` varchar(250) DEFAULT NULL, + `titles` json DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `VOLUME_PAPER` +-- + +CREATE TABLE `VOLUME_PAPER` ( + `ID` int UNSIGNED NOT NULL, + `VID` int UNSIGNED NOT NULL, + `DOCID` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `VOLUME_PAPER_POSITION` +-- + +CREATE TABLE `VOLUME_PAPER_POSITION` ( + `VID` int UNSIGNED NOT NULL, + `PAPERID` int UNSIGNED NOT NULL, + `POSITION` int UNSIGNED NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `VOLUME_SETTING` +-- + +CREATE TABLE `VOLUME_SETTING` ( + `VID` int UNSIGNED NOT NULL, + `SETTING` varchar(200) NOT NULL, + `VALUE` text CHARACTER SET utf8mb3 COLLATE utf8_unicode_ci +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `WEBSITE_HEADER` +-- + +CREATE TABLE `WEBSITE_HEADER` ( + `LOGOID` int UNSIGNED NOT NULL, + `RVID` int UNSIGNED NOT NULL, + `TYPE` enum('img','text') NOT NULL, + `IMG` varchar(255) NOT NULL, + `IMG_WIDTH` varchar(255) NOT NULL, + `IMG_HEIGHT` varchar(255) NOT NULL, + `IMG_HREF` varchar(255) NOT NULL, + `IMG_ALT` varchar(255) NOT NULL, + `TEXT` varchar(1000) NOT NULL, + `TEXT_CLASS` varchar(255) NOT NULL, + `TEXT_STYLE` varchar(255) NOT NULL, + `ALIGN` varchar(10) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `WEBSITE_NAVIGATION` +-- + +CREATE TABLE `WEBSITE_NAVIGATION` ( + `NAVIGATIONID` int UNSIGNED NOT NULL, + `SID` int UNSIGNED NOT NULL COMMENT 'RVID', + `PAGEID` int UNSIGNED NOT NULL, + `TYPE_PAGE` varchar(255) NOT NULL, + `CONTROLLER` varchar(255) NOT NULL, + `ACTION` varchar(255) NOT NULL, + `LABEL` varchar(500) NOT NULL, + `PARENT_PAGEID` int UNSIGNED NOT NULL, + `PARAMS` text NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `WEBSITE_SETTINGS` +-- + +CREATE TABLE `WEBSITE_SETTINGS` ( + `SID` int UNSIGNED NOT NULL, + `SETTING` varchar(50) NOT NULL, + `VALUE` varchar(1000) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- -------------------------------------------------------- + +-- +-- Table structure for table `WEBSITE_STYLES` +-- + +CREATE TABLE `WEBSITE_STYLES` ( + `RVID` int UNSIGNED NOT NULL, + `SETTING` varchar(50) NOT NULL, + `VALUE` varchar(1000) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `authors` +-- +ALTER TABLE `authors` + ADD PRIMARY KEY (`idauthors`), + ADD KEY `paperid` (`paperid`); + +-- +-- Indexes for table `doi_queue` +-- +ALTER TABLE `doi_queue` + ADD PRIMARY KEY (`id_doi_queue`), + ADD UNIQUE KEY `paperid` (`paperid`), + ADD KEY `doi_status` (`doi_status`); + +-- +-- Indexes for table `doi_queue_volumes` +-- +ALTER TABLE `doi_queue_volumes` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `uniq_vid` (`vid`) USING BTREE, + ADD KEY `vid` (`vid`); + +-- +-- Indexes for table `MAIL_LOG` +-- +ALTER TABLE `MAIL_LOG` + ADD PRIMARY KEY (`ID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `DOCID` (`DOCID`), + ADD KEY `WHEN` (`WHEN`); + +-- +-- Indexes for table `MAIL_TEMPLATE` +-- +ALTER TABLE `MAIL_TEMPLATE` + ADD PRIMARY KEY (`ID`), + ADD KEY `KEY` (`KEY`), + ADD KEY `RVCODE` (`RVCODE`), + ADD KEY `RVID` (`RVID`), + ADD KEY `PARENTID` (`PARENTID`), + ADD KEY `POSITION` (`POSITION`); + +-- +-- Indexes for table `metadata_sources` +-- +ALTER TABLE `metadata_sources` + ADD PRIMARY KEY (`id`), + ADD KEY `type` (`type`); + +-- +-- Indexes for table `NEWS` +-- +ALTER TABLE `NEWS` + ADD PRIMARY KEY (`NEWSID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `ONLINE` (`ONLINE`), + ADD KEY `DATE_POST` (`DATE_POST`); + +-- +-- Indexes for table `PAPERS` +-- +ALTER TABLE `PAPERS` + ADD PRIMARY KEY (`DOCID`), + ADD KEY `FK_REPOID_idx` (`REPOID`), + ADD KEY `FK_VID_idx` (`VID`), + ADD KEY `FK_RVID_idx` (`RVID`), + ADD KEY `STATUS` (`STATUS`), + ADD KEY `PAPERID` (`PAPERID`), + ADD KEY `SID` (`SID`), + ADD KEY `UID` (`UID`), + ADD KEY `SUBMISSION_DATE` (`SUBMISSION_DATE`), + ADD KEY `PUBLICATION_DATE` (`PUBLICATION_DATE`), + ADD KEY `FLAG` (`FLAG`), + ADD KEY `DOI` (`DOI`); +ALTER TABLE `PAPERS` ADD FULLTEXT KEY `RECORD` (`RECORD`); + +-- +-- Indexes for table `paper_citations` +-- +ALTER TABLE `paper_citations` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `source_id_2` (`source_id`,`docid`), + ADD KEY `docid` (`docid`), + ADD KEY `source_id` (`source_id`); + +-- +-- Indexes for table `paper_classifications` +-- +ALTER TABLE `paper_classifications` + ADD PRIMARY KEY (`id`), + ADD KEY `paperid` (`paperid`), + ADD KEY `type` (`type`), + ADD KEY `source_id` (`source_id`); + +-- +-- Indexes for table `PAPER_COMMENTS` +-- +ALTER TABLE `PAPER_COMMENTS` + ADD PRIMARY KEY (`PCID`), + ADD KEY `DOCID` (`DOCID`), + ADD KEY `TYPE` (`TYPE`), + ADD KEY `UID` (`UID`), + ADD KEY `DEADLINE` (`DEADLINE`), + ADD KEY `WHEN` (`WHEN`), + ADD KEY `PARENTID` (`PARENTID`); + +-- +-- Indexes for table `paper_conflicts` +-- +ALTER TABLE `paper_conflicts` + ADD PRIMARY KEY (`cid`), + ADD UNIQUE KEY `U_PAPERID_BY` (`paper_id`,`by`) USING BTREE, + ADD KEY `BY_UID` (`by`), + ADD KEY `PAPERID` (`paper_id`), + ADD KEY `answer` (`answer`); + +-- +-- Indexes for table `paper_datasets` +-- +ALTER TABLE `paper_datasets` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `unique` (`doc_id`,`code`(15),`name`(35),`value`(47),`source_id`), + ADD KEY `doc_id` (`doc_id`), + ADD KEY `source_id` (`source_id`), + ADD KEY `code` (`code`(15)), + ADD KEY `name` (`name`(35)), + ADD KEY `id_paper_datasets_meta` (`id_paper_datasets_meta`); + +-- +-- Indexes for table `paper_datasets_meta` +-- +ALTER TABLE `paper_datasets_meta` + ADD PRIMARY KEY (`id`); + +-- +-- Indexes for table `paper_files` +-- +ALTER TABLE `paper_files` + ADD PRIMARY KEY (`id`), + ADD KEY `doc_id` (`doc_id`), + ADD KEY `source` (`source`); + +-- +-- Indexes for table `paper_licences` +-- +ALTER TABLE `paper_licences` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `docid` (`docid`), + ADD KEY `source_id` (`source_id`); + +-- +-- Indexes for table `PAPER_LOG` +-- +ALTER TABLE `PAPER_LOG` + ADD PRIMARY KEY (`LOGID`), + ADD KEY `fk_T_PAPER_MODIF_T_PAPERS_idx` (`DOCID`), + ADD KEY `fk_T_PAPER_MODIF_T_USER_idx` (`UID`), + ADD KEY `PAPERID` (`PAPERID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `DATE` (`DATE`); + +-- +-- Indexes for table `paper_projects` +-- +ALTER TABLE `paper_projects` + ADD PRIMARY KEY (`idproject`), + ADD UNIQUE KEY `paperid` (`paperid`), + ADD UNIQUE KEY `paperid_src_uniq` (`paperid`,`source_id`) USING BTREE, + ADD KEY `idx_source_id` (`source_id`); + +-- +-- Indexes for table `PAPER_SETTINGS` +-- +ALTER TABLE `PAPER_SETTINGS` + ADD PRIMARY KEY (`PSID`), + ADD KEY `SETTING` (`SETTING`), + ADD KEY `DOCID` (`DOCID`); + +-- +-- Indexes for table `PAPER_STAT` +-- +ALTER TABLE `PAPER_STAT` + ADD PRIMARY KEY (`DOCID`,`CONSULT`,`IP`,`HIT`), + ADD KEY `COUNTER` (`COUNTER`), + ADD KEY `CONSULT` (`CONSULT`); + +-- +-- Indexes for table `refresh_tokens` +-- +ALTER TABLE `refresh_tokens` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `UNIQ_9BACE7E16973EC66` (`refreshToken`); + +-- +-- Indexes for table `REMINDERS` +-- +ALTER TABLE `REMINDERS` + ADD PRIMARY KEY (`ID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `TYPE` (`TYPE`); + +-- +-- Indexes for table `REVIEW` +-- +ALTER TABLE `REVIEW` + ADD PRIMARY KEY (`RVID`), + ADD UNIQUE KEY `U_CODE` (`CODE`), + ADD KEY `STATUS` (`STATUS`); + +-- +-- Indexes for table `REVIEWER_ALIAS` +-- +ALTER TABLE `REVIEWER_ALIAS` + ADD UNIQUE KEY `UNIQUE` (`UID`,`DOCID`,`ALIAS`) USING BTREE; + +-- +-- Indexes for table `REVIEWER_POOL` +-- +ALTER TABLE `REVIEWER_POOL` + ADD PRIMARY KEY (`RVID`,`VID`,`UID`); + +-- +-- Indexes for table `REVIEWER_REPORT` +-- +ALTER TABLE `REVIEWER_REPORT` + ADD PRIMARY KEY (`ID`), + ADD UNIQUE KEY `UID` (`UID`,`DOCID`), + ADD KEY `ONBEHALF_UID` (`ONBEHALF_UID`) USING BTREE; + +-- +-- Indexes for table `REVIEW_SETTING` +-- +ALTER TABLE `REVIEW_SETTING` + ADD PRIMARY KEY (`RVID`,`SETTING`), + ADD KEY `FK_CONFIG_idx` (`RVID`); + +-- +-- Indexes for table `SECTION` +-- +ALTER TABLE `SECTION` + ADD PRIMARY KEY (`SID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `POSITION` (`POSITION`); + +-- +-- Indexes for table `SECTION_SETTING` +-- +ALTER TABLE `SECTION_SETTING` + ADD PRIMARY KEY (`SID`,`SETTING`); + +-- +-- Indexes for table `STAT_TEMP` +-- +ALTER TABLE `STAT_TEMP` + ADD PRIMARY KEY (`VISITID`), + ADD KEY `DOCID` (`DOCID`); + +-- +-- Indexes for table `USER` +-- +ALTER TABLE `USER` + ADD PRIMARY KEY (`UID`), + ADD UNIQUE KEY `U_USERNAME` (`USERNAME`), + ADD KEY `API_PASSWORD` (`API_PASSWORD`), + ADD KEY `IS_VALID` (`IS_VALID`), + ADD KEY `FIRSTNAME` (`FIRSTNAME`), + ADD KEY `LASTNAME` (`LASTNAME`), + ADD KEY `SCREEN_NAME` (`SCREEN_NAME`), + ADD KEY `EMAIL` (`EMAIL`(255)), + ADD KEY `REGISTRATION_DATE` (`REGISTRATION_DATE`); + +-- +-- Indexes for table `USER_ASSIGNMENT` +-- +ALTER TABLE `USER_ASSIGNMENT` + ADD PRIMARY KEY (`ID`), + ADD KEY `FK_ITEMID_idx` (`ITEMID`), + ADD KEY `FK_UID_idx` (`UID`), + ADD KEY `ITEM` (`ITEM`), + ADD KEY `ROLEID` (`ROLEID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `STATUS` (`STATUS`), + ADD KEY `WHEN` (`WHEN`), + ADD KEY `TMP_USER` (`TMP_USER`), + ADD KEY `INVITATION_ID` (`INVITATION_ID`); + +-- +-- Indexes for table `USER_INVITATION` +-- +ALTER TABLE `USER_INVITATION` + ADD PRIMARY KEY (`ID`), + ADD KEY `TOKEN` (`TOKEN`), + ADD KEY `STATUS` (`STATUS`), + ADD KEY `SENDER_UID` (`SENDER_UID`); + +-- +-- Indexes for table `USER_INVITATION_ANSWER` +-- +ALTER TABLE `USER_INVITATION_ANSWER` + ADD UNIQUE KEY `U_ID` (`ID`); + +-- +-- Indexes for table `USER_INVITATION_ANSWER_DETAIL` +-- +ALTER TABLE `USER_INVITATION_ANSWER_DETAIL` + ADD UNIQUE KEY `U_ID_NAME` (`ID`,`NAME`); + +-- +-- Indexes for table `USER_MERGE` +-- +ALTER TABLE `USER_MERGE` + ADD PRIMARY KEY (`MID`); + +-- +-- Indexes for table `USER_ROLES` +-- +ALTER TABLE `USER_ROLES` + ADD PRIMARY KEY (`UID`,`RVID`,`ROLEID`), + ADD KEY `RVID` (`RVID`), + ADD KEY `ROLEID` (`ROLEID`), + ADD KEY `UID` (`UID`); + +-- +-- Indexes for table `USER_TMP` +-- +ALTER TABLE `USER_TMP` + ADD PRIMARY KEY (`ID`), + ADD KEY `EMAIL` (`EMAIL`(150)); + +-- +-- Indexes for table `VOLUME` +-- +ALTER TABLE `VOLUME` + ADD PRIMARY KEY (`VID`), + ADD KEY `FK_CONFID_idx` (`RVID`), + ADD KEY `POSITION` (`POSITION`); + +-- +-- Indexes for table `VOLUME_METADATA` +-- +ALTER TABLE `VOLUME_METADATA` + ADD PRIMARY KEY (`ID`), + ADD KEY `VID` (`VID`), + ADD KEY `POSITION` (`POSITION`); + +-- +-- Indexes for table `VOLUME_PAPER` +-- +ALTER TABLE `VOLUME_PAPER` + ADD PRIMARY KEY (`ID`), + ADD UNIQUE KEY `UNIQUE` (`VID`,`DOCID`) USING BTREE; + +-- +-- Indexes for table `VOLUME_PAPER_POSITION` +-- +ALTER TABLE `VOLUME_PAPER_POSITION` + ADD UNIQUE KEY `VID` (`VID`,`PAPERID`), + ADD KEY `POSITION` (`POSITION`); + +-- +-- Indexes for table `VOLUME_SETTING` +-- +ALTER TABLE `VOLUME_SETTING` + ADD PRIMARY KEY (`VID`,`SETTING`), + ADD KEY `FK_RVID0_idx` (`VID`); + +-- +-- Indexes for table `WEBSITE_HEADER` +-- +ALTER TABLE `WEBSITE_HEADER` + ADD PRIMARY KEY (`LOGOID`,`RVID`); + +-- +-- Indexes for table `WEBSITE_NAVIGATION` +-- +ALTER TABLE `WEBSITE_NAVIGATION` + ADD PRIMARY KEY (`NAVIGATIONID`), + ADD KEY `SID` (`SID`), + ADD KEY `TYPE_PAGE` (`TYPE_PAGE`), + ADD KEY `PARENT_PAGEID` (`PARENT_PAGEID`); + +-- +-- Indexes for table `WEBSITE_SETTINGS` +-- +ALTER TABLE `WEBSITE_SETTINGS` + ADD PRIMARY KEY (`SID`,`SETTING`); + +-- +-- Indexes for table `WEBSITE_STYLES` +-- +ALTER TABLE `WEBSITE_STYLES` + ADD PRIMARY KEY (`RVID`,`SETTING`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `authors` +-- +ALTER TABLE `authors` + MODIFY `idauthors` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `doi_queue` +-- +ALTER TABLE `doi_queue` + MODIFY `id_doi_queue` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `doi_queue_volumes` +-- +ALTER TABLE `doi_queue_volumes` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `MAIL_LOG` +-- +ALTER TABLE `MAIL_LOG` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `MAIL_TEMPLATE` +-- +ALTER TABLE `MAIL_TEMPLATE` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `metadata_sources` +-- +ALTER TABLE `metadata_sources` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `NEWS` +-- +ALTER TABLE `NEWS` + MODIFY `NEWSID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `PAPERS` +-- +ALTER TABLE `PAPERS` + MODIFY `DOCID` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Unique Identifier for each submission'; + +-- +-- AUTO_INCREMENT for table `paper_citations` +-- +ALTER TABLE `paper_citations` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `PAPER_COMMENTS` +-- +ALTER TABLE `PAPER_COMMENTS` + MODIFY `PCID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `paper_conflicts` +-- +ALTER TABLE `paper_conflicts` + MODIFY `cid` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `paper_datasets` +-- +ALTER TABLE `paper_datasets` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `paper_datasets_meta` +-- +ALTER TABLE `paper_datasets_meta` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `paper_files` +-- +ALTER TABLE `paper_files` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `paper_licences` +-- +ALTER TABLE `paper_licences` + MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `PAPER_LOG` +-- +ALTER TABLE `PAPER_LOG` + MODIFY `LOGID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `paper_projects` +-- +ALTER TABLE `paper_projects` + MODIFY `idproject` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `PAPER_SETTINGS` +-- +ALTER TABLE `PAPER_SETTINGS` + MODIFY `PSID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `refresh_tokens` +-- +ALTER TABLE `refresh_tokens` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `REMINDERS` +-- +ALTER TABLE `REMINDERS` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `REVIEW` +-- +ALTER TABLE `REVIEW` + MODIFY `RVID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `REVIEWER_REPORT` +-- +ALTER TABLE `REVIEWER_REPORT` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `SECTION` +-- +ALTER TABLE `SECTION` + MODIFY `SID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `STAT_TEMP` +-- +ALTER TABLE `STAT_TEMP` + MODIFY `VISITID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `USER` +-- +ALTER TABLE `USER` + MODIFY `UID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `USER_ASSIGNMENT` +-- +ALTER TABLE `USER_ASSIGNMENT` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `USER_INVITATION` +-- +ALTER TABLE `USER_INVITATION` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `USER_MERGE` +-- +ALTER TABLE `USER_MERGE` + MODIFY `MID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `USER_TMP` +-- +ALTER TABLE `USER_TMP` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `VOLUME` +-- +ALTER TABLE `VOLUME` + MODIFY `VID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `VOLUME_METADATA` +-- +ALTER TABLE `VOLUME_METADATA` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `VOLUME_PAPER` +-- +ALTER TABLE `VOLUME_PAPER` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `WEBSITE_HEADER` +-- +ALTER TABLE `WEBSITE_HEADER` + MODIFY `LOGOID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- AUTO_INCREMENT for table `WEBSITE_NAVIGATION` +-- +ALTER TABLE `WEBSITE_NAVIGATION` + MODIFY `NAVIGATIONID` int UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `doi_queue_volumes` +-- +ALTER TABLE `doi_queue_volumes` + ADD CONSTRAINT `doi_queue_volumes_ibfk_1` FOREIGN KEY (`vid`) REFERENCES `VOLUME` (`VID`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `paper_citations` +-- +ALTER TABLE `paper_citations` + ADD CONSTRAINT `paper_citations_ibfk_1` FOREIGN KEY (`docid`) REFERENCES `PAPERS` (`DOCID`), + ADD CONSTRAINT `paper_citations_ibfk_2` FOREIGN KEY (`source_id`) REFERENCES `metadata_sources` (`id`); + +-- +-- Constraints for table `paper_datasets` +-- +ALTER TABLE `paper_datasets` + ADD CONSTRAINT `deleteAssocMeta` FOREIGN KEY (`id_paper_datasets_meta`) REFERENCES `paper_datasets_meta` (`id`) ON DELETE CASCADE; + +-- +-- Constraints for table `paper_projects` +-- +ALTER TABLE `paper_projects` + ADD CONSTRAINT `paper_projects_ibfk_1` FOREIGN KEY (`paperid`) REFERENCES `PAPERS` (`PAPERID`), + ADD CONSTRAINT `paper_projects_ibfk_2` FOREIGN KEY (`source_id`) REFERENCES `metadata_sources` (`id`); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; \ No newline at end of file diff --git a/src/mysql/docker/episciences/mysql.env b/src/mysql/docker/episciences/mysql.env new file mode 100644 index 000000000..cbd6da82d --- /dev/null +++ b/src/mysql/docker/episciences/mysql.env @@ -0,0 +1,5 @@ +MYSQL_ROOT_PASSWORD=root +MYSQL_HOST=episciences +MYSQL_USER=episciences +MYSQL_PASSWORD=episciences +MYSQL_DATABASE=episciences \ No newline at end of file diff --git a/src/mysql/docker/solr/mysql.env b/src/mysql/docker/solr/mysql.env new file mode 100644 index 000000000..bb19baf2f --- /dev/null +++ b/src/mysql/docker/solr/mysql.env @@ -0,0 +1,5 @@ +MYSQL_ROOT_PASSWORD=root +MYSQL_HOST=solr_index +MYSQL_USER=solr_index +MYSQL_PASSWORD=solr_index +MYSQL_DATABASE=solr_index \ No newline at end of file diff --git a/src/mysql/docker/solr/solr_index_queue.sql b/src/mysql/docker/solr/solr_index_queue.sql new file mode 100644 index 000000000..8bb839989 --- /dev/null +++ b/src/mysql/docker/solr/solr_index_queue.sql @@ -0,0 +1,58 @@ +-- Generation Time: Jun 14, 2024 at 10:12 AM +-- Server version: 8.0.29 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + +-- +-- Database: `solr_index` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `INDEX_QUEUE` +-- + +CREATE TABLE `INDEX_QUEUE` ( + `ID` int UNSIGNED NOT NULL, + `DOCID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `UPDATED` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `APPLICATION` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Application requesting indexing', + `ORIGIN` set('UPDATE','DELETE','') CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL COMMENT 'Type of indexing request', + `CORE` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Solr Collection', + `PRIORITY` tinyint UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Indexing priority', + `PID` int UNSIGNED NOT NULL DEFAULT '0', + `HOSTNAME` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `STATUS` set('locked','error','ok','') CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL DEFAULT 'ok' COMMENT 'Request status', + `MESSAGE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `INDEX_QUEUE` +-- +ALTER TABLE `INDEX_QUEUE` + ADD PRIMARY KEY (`ID`), + ADD UNIQUE KEY `DOCID` (`DOCID`,`ORIGIN`,`CORE`), + ADD KEY `STATUS` (`STATUS`), + ADD KEY `PRIORITY` (`PRIORITY`), + ADD KEY `ORIGIN` (`ORIGIN`), + ADD KEY `PID` (`PID`), + ADD KEY `HOSTNAME` (`HOSTNAME`); +ALTER TABLE `INDEX_QUEUE` ADD FULLTEXT KEY `CORE` (`CORE`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `INDEX_QUEUE` +-- +ALTER TABLE `INDEX_QUEUE` + MODIFY `ID` int UNSIGNED NOT NULL AUTO_INCREMENT; +COMMIT; diff --git a/src/php-fpm/Dockerfile b/src/php-fpm/Dockerfile new file mode 100644 index 000000000..5120eafea --- /dev/null +++ b/src/php-fpm/Dockerfile @@ -0,0 +1,64 @@ +FROM php:8.1-fpm + +# Set timezone +ENV TZ=Europe/Paris +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +# Install necessary packages and PHP extensions +RUN apt-get update \ + && apt-get install -y --no-install-recommends --no-install-suggests \ + libxslt1-dev \ + libxml2 \ + libcurl4-gnutls-dev \ + libmagickwand-dev \ + libzip-dev \ + libicu-dev \ + libonig-dev \ + libjpeg-dev \ + libjpeg62-turbo-dev \ + libfreetype6-dev \ + libpng-dev \ + && apt-get clean + +RUN apt-get install -y --no-install-recommends --no-install-suggests \ + zip \ + unzip \ + git \ + vim \ + poppler-utils \ + && apt-get clean + +RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ + +RUN pecl install imagick && \ + docker-php-ext-enable imagick + +RUN pecl install xdebug && \ + docker-php-ext-enable xdebug + +RUN docker-php-ext-install curl gd dom fileinfo iconv intl pdo pdo_mysql posix simplexml xml xsl zip +RUN docker-php-ext-enable curl gd dom fileinfo iconv intl pdo pdo_mysql posix simplexml xml xsl zip + +# Install Node.js and Yarn +# Install Node.js (version 18.x) and Yarn +RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && apt-get clean \ + && npm install -g yarn + +# Install Composer globally +COPY --from=composer:latest /usr/bin/composer /usr/bin/composer + +# Add Xdebug configuration +COPY ./src/php-fpm/xdebug.ini /usr/local/etc/php/conf.d/ + +# disable opcache configuration +#COPY ./src/php-fpm/opcache.ini /usr/local/etc/php/conf.d/ + +# Copy entrypoint script and set permissions +COPY ./src/php-fpm/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] + +# Run the default php-fpm command +CMD ["php-fpm"] diff --git a/src/php-fpm/entrypoint.sh b/src/php-fpm/entrypoint.sh new file mode 100644 index 000000000..cc2032806 --- /dev/null +++ b/src/php-fpm/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/bash +chown -R www-data:www-data /var/www/data /var/www/cache /var/www/logs +# Run Composer as www-data +su - www-data -c "cd /var/www/htdocs/;composer install --no-interaction --prefer-dist --optimize-autoloader" + +exec "$@" + diff --git a/src/php-fpm/opcache.ini b/src/php-fpm/opcache.ini new file mode 100644 index 000000000..ce917cc17 --- /dev/null +++ b/src/php-fpm/opcache.ini @@ -0,0 +1,3 @@ +[opcache] +opcache.enable=0 +opcache.enable_cli=0 diff --git a/src/php-fpm/php-fpm.conf b/src/php-fpm/php-fpm.conf new file mode 100644 index 000000000..abcca8cbd --- /dev/null +++ b/src/php-fpm/php-fpm.conf @@ -0,0 +1,9 @@ +[global] +error_log = /proc/self/fd/2 + +[www] +;listen = 0.0.0.0:9000 +;listen.allowed_clients = 0.0.0.0 + + + diff --git a/src/php-fpm/xdebug.ini b/src/php-fpm/xdebug.ini new file mode 100644 index 000000000..507d332b2 --- /dev/null +++ b/src/php-fpm/xdebug.ini @@ -0,0 +1,20 @@ +[xdebug] +;zend_extension=xdebug.so +xdebug.mode=debug,profile +xdebug.start_with_request=yes +;xdebug.client_host=host.docker.internal # Use this for Mac/Windows +xdebug.client_host=localhost # Use this for Linux +xdebug.client_port=9003 +xdebug.idekey=PHPSTORM +;xdebug.discover_client_host = 1 +xdebug.log_level=7 +xdebug.profiler_append=0 +xdebug.output_dir=/var/www/xdebug +xdebug.log=/var/www/logs/xdebug.log +xdebug.profiler_output_name=cachegrind.out.%s.%H.%R + + + + + +