Skip to content

Commit

Permalink
feat(install-scripts): add option to select database
Browse files Browse the repository at this point in the history
  • Loading branch information
Shchepotin committed Mar 31, 2024
1 parent 4f28a24 commit 2c204a6
Show file tree
Hide file tree
Showing 12 changed files with 613 additions and 12 deletions.
20 changes: 20 additions & 0 deletions .install-scripts/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,22 @@ import removeGoogleAuth from './scripts/remove-auth-google';
import removeAppleAuth from './scripts/remove-auth-apple';
import removeTwitterAuth from './scripts/remove-auth-twitter';
import removeInstallScripts from './scripts/remove-install-scripts';
import removePostgreSql from './scripts/remove-postgresql';
import removeMongoDb from './scripts/remove-mongodb';

(async () => {
const response = await prompts(
[
{
type: 'select',
name: 'database',
message: 'Which database do you want to use?',
choices: [
{ title: 'PostgreSQL and MongoDB', value: 'pg-mongo' },
{ title: 'PostgreSQL', value: 'pg' },
{ title: 'MongoDB', value: 'mongo' },
],
},
{
type: 'confirm',
name: 'isAuthFacebook',
Expand Down Expand Up @@ -40,6 +52,14 @@ import removeInstallScripts from './scripts/remove-install-scripts';
},
);

if (response.database === 'mongo') {
removePostgreSql();
}

if (response.database === 'pg') {
removeMongoDb();
}

if (!response.isAuthFacebook) {
removeFacebookAuth();
}
Expand Down
267 changes: 267 additions & 0 deletions .install-scripts/scripts/remove-mongodb.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,267 @@
import replace from '../helpers/replace';
import path from 'path';
import fs from 'fs';

const removePostgreSql = async () => {
const filesToRemove = [
path.join(
process.cwd(),
'src',
'files',
'infrastructure',
'persistence',
'document',
),
path.join(
process.cwd(),
'src',
'session',
'infrastructure',
'persistence',
'document',
),
path.join(
process.cwd(),
'src',
'users',
'infrastructure',
'persistence',
'document',
),
path.join(process.cwd(), 'src', 'database', 'mongoose-config.service.ts'),
path.join(process.cwd(), 'src', 'database', 'seeds', 'document'),
path.join(
process.cwd(),
'src',
'roles',
'infrastructure',
'persistence',
'document',
),
path.join(
process.cwd(),
'src',
'statuses',
'infrastructure',
'persistence',
'document',
),
path.join(process.cwd(), 'env-example-document'),
path.join(process.cwd(), 'docker-compose.document.ci.yaml'),
path.join(process.cwd(), 'docker-compose.document.yaml'),
path.join(process.cwd(), 'startup.document.ci.sh'),
path.join(process.cwd(), 'startup.document.dev.sh'),
path.join(process.cwd(), 'document.Dockerfile'),
path.join(process.cwd(), 'document.e2e.Dockerfile'),
path.join(process.cwd(), '.hygen', 'seeds', 'create-document'),
path.join(process.cwd(), 'src', 'utils', 'document-entity-helper.ts'),
];

replace({
path: path.join(process.cwd(), 'src', 'app.module.ts'),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructureDatabaseModule = TypeOrmModule.forRootAsync({
useClass: TypeOrmConfigService,
dataSourceFactory: async (options: DataSourceOptions) => {
return new DataSource(options).initialize();
},
});`,
},
{
find: /\s*import \{ MongooseModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ MongooseConfigService \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
],
});
replace({
path: path.join(process.cwd(), 'src', 'files', 'files.module.ts'),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructurePersistenceModule = RelationalFilePersistenceModule;`,
},
{
find: /\s*import \{ DocumentFilePersistenceModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
{
find: /\s*import databaseConfig from .*/g,
replace: '',
},
],
});
replace({
path: path.join(
process.cwd(),
'src',
'files',
'infrastructure',
'uploader',
'local',
'files.module.ts',
),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructurePersistenceModule = RelationalFilePersistenceModule;`,
},
{
find: /\s*import \{ DocumentFilePersistenceModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
{
find: /\s*import databaseConfig from .*/g,
replace: '',
},
],
});
replace({
path: path.join(
process.cwd(),
'src',
'files',
'infrastructure',
'uploader',
's3',
'files.module.ts',
),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructurePersistenceModule = RelationalFilePersistenceModule;`,
},
{
find: /\s*import \{ DocumentFilePersistenceModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
{
find: /\s*import databaseConfig from .*/g,
replace: '',
},
],
});
replace({
path: path.join(
process.cwd(),
'src',
'files',
'infrastructure',
'uploader',
's3-presigned',
'files.module.ts',
),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructurePersistenceModule = RelationalFilePersistenceModule;`,
},
{
find: /\s*import \{ DocumentFilePersistenceModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
{
find: /\s*import databaseConfig from .*/g,
replace: '',
},
],
});
replace({
path: path.join(process.cwd(), 'src', 'session', 'session.module.ts'),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructurePersistenceModule = RelationalSessionPersistenceModule;`,
},
{
find: /\s*import \{ DocumentSessionPersistenceModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
{
find: /\s*import databaseConfig from .*/g,
replace: '',
},
],
});

replace({
path: path.join(process.cwd(), 'src', 'users', 'users.module.ts'),
actions: [
{
find: /\/\/ <database-block>.*\/\/ <\/database-block>/gs,
replace: `const infrastructurePersistenceModule = RelationalUserPersistenceModule;`,
},
{
find: /\s*import \{ DocumentUserPersistenceModule \} from .*/g,
replace: '',
},
{
find: /\s*import \{ DatabaseConfig \} from .*/g,
replace: '',
},
{
find: /\s*import databaseConfig from .*/g,
replace: '',
},
],
});
replace({
path: path.join(process.cwd(), 'package.json'),
actions: [
{
find: /\s*\"@nestjs\/mongoose\":.*/g,
replace: '',
},
{
find: /\s*\"mongoose\":.*/g,
replace: '',
},
{
find: /\s*\"seed:run:document\":.*/g,
replace: '',
},
{
find: /\s*\"seed:create:document\":.*/g,
replace: '',
},
],
});

filesToRemove.map((file) => {
fs.rmSync(file, {
recursive: true,
force: true,
});
});
};

export default removePostgreSql;
Loading

0 comments on commit 2c204a6

Please sign in to comment.