mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 01:47:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const chalk = require('chalk');
 | |
| const stopProcess = require('./stop-process');
 | |
| 
 | |
| const DB_ARGS = [
 | |
|   'dbclient',
 | |
|   'dbhost',
 | |
|   'dbport',
 | |
|   'dbname',
 | |
|   'dbusername',
 | |
|   'dbpassword',
 | |
| ];
 | |
| 
 | |
| const VALID_CLIENTS = ['sqlite', 'mysql', 'postgres', 'mongo'];
 | |
| 
 | |
| module.exports = function parseDatabaseArguments({ scope, args }) {
 | |
|   const argKeys = Object.keys(args);
 | |
|   const matchingArgs = DB_ARGS.filter(key => argKeys.includes(key));
 | |
|   const missingArgs = DB_ARGS.filter(key => !argKeys.includes(key));
 | |
| 
 | |
|   if (matchingArgs.length === 0) return;
 | |
| 
 | |
|   if (matchingArgs.length !== DB_ARGS.length && args.dbclient !== 'sqlite') {
 | |
|     return stopProcess(
 | |
|       `Required database arguments are missing: ${missingArgs.join(', ')}.`
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   if (!VALID_CLIENTS.includes(args.dbclient)) {
 | |
|     return stopProcess(
 | |
|       `Invalid client ${chalk.yellow(
 | |
|         args.dbclient
 | |
|       )}. Possible choices: ${VALID_CLIENTS.join(', ')}.`
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   scope.dbforce = args.dbforce !== undefined;
 | |
| 
 | |
|   const database = {
 | |
|     settings: {
 | |
|       client: args.dbclient,
 | |
|       host: args.dbhost,
 | |
|       srv: args.dbsrv,
 | |
|       port: args.dbport,
 | |
|       database: args.dbname,
 | |
|       username: args.dbusername,
 | |
|       password: args.dbpassword,
 | |
|       filename: args.dbfile,
 | |
|     },
 | |
|     options: {},
 | |
|   };
 | |
| 
 | |
|   if (args.dbauth !== undefined) {
 | |
|     database.options.authenticationDatabase = args.dbauth;
 | |
|   }
 | |
| 
 | |
|   if (args.dbssl !== undefined) {
 | |
|     if (args.dbclient === 'mongo') {
 | |
|       database.options.ssl = args.dbssl === 'true';
 | |
|     } else {
 | |
|       database.settings.ssl = args.dbssl === 'true';
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   scope.database = database;
 | |
| };
 | 
