Skip to content

Commit

Permalink
💚 chore: Add auth seeding files #91
Browse files Browse the repository at this point in the history
- auth 시딩파일 설정
- `yarn seed` 으로 시딩
- `yarn seed:reset` 으로 시딩할 디비 리셋
  • Loading branch information
jis-kim committed Apr 18, 2023
1 parent 9cf757e commit 31c705d
Show file tree
Hide file tree
Showing 8 changed files with 203 additions and 7 deletions.
2 changes: 1 addition & 1 deletion backend/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ module.exports = {
node: true,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
ignorePatterns: ['.eslintrc.js', 'seeding/'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
Expand Down
7 changes: 6 additions & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
"db": "docker compose --env-file .env -f ../docker-compose.yml up -d",
"db:down": "docker compose --env-file .env -f ../docker-compose.yml down",
"db:reset": "docker compose --env-file .env -f ../docker-compose.yml down -v",
"postinstall": "if [ ! -d .husky/_ ]; then cd .. && husky install backend/.husky; fi"
"postinstall": "if [ ! -d .husky/_ ]; then cd .. && husky install backend/.husky; fi",
"seed": "npx ts-node ./seeding/data-source.ts",
"seed:reset": "./seeding/reset-db.sh"
},
"dependencies": {
"@hapi/joi": "^17.1.1",
Expand All @@ -43,10 +45,12 @@
"typeorm-naming-strategies": "^4.1.0"
},
"devDependencies": {
"@faker-js/faker": "^7.6.0",
"@nestjs/cli": "^9.0.0",
"@nestjs/schematics": "^9.0.0",
"@nestjs/testing": "^9.4.0",
"@types/express": "^4.17.13",
"@types/faker": "^6.6.9",
"@types/hapi__joi": "^17.1.9",
"@types/jest": "29.2.4",
"@types/node": "18.11.18",
Expand All @@ -67,6 +71,7 @@
"ts-loader": "^9.2.3",
"ts-node": "^10.0.0",
"tsconfig-paths": "4.1.1",
"typeorm-extension": "^2.7.0",
"typescript": "^4.7.4"
},
"jest": {
Expand Down
31 changes: 31 additions & 0 deletions backend/seeding/data-source.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
//import dotenv
import { config } from 'dotenv';

import { DataSource, DataSourceOptions } from 'typeorm';
import { runSeeders, SeederOptions } from 'typeorm-extension';
import { Auth } from '../src/entity/auth.entity';
import AuthSeeder from './seeder/auth.seeder';
import AuthFactory from './factory/auth.factory';

config();

(async () => {
const options: DataSourceOptions & SeederOptions = {
type: 'postgres',
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT),
database: 'testdb',
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
synchronize: true,
entities: [Auth],
seeds: [AuthSeeder],
factories: [AuthFactory],
};
console.log('options: ', options);

const dataSource = new DataSource(options);
await dataSource.initialize();

await runSeeders(dataSource);
})();
16 changes: 16 additions & 0 deletions backend/seeding/factory/auth.factory.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// file name should be <entityName>.factory.ts

import { Faker } from '@faker-js/faker';
import { Auth, AuthStatus } from '../../src/entity/auth.entity';
import { setSeederFactory } from 'typeorm-extension';

export default setSeederFactory(Auth, (faker: Faker) => {
const auth = new Auth();

//auth.id is auto generated
//auth.status = faker.datatype.boolean() ? AuthStatus.REGISTERD : AuthStatus.UNREGISTERD;
auth.status = AuthStatus.REGISTERD;
auth.email = faker.internet.email();

return auth;
});
7 changes: 7 additions & 0 deletions backend/seeding/reset-db.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash
DB=$1;
if [ $1 -z ] ; then
echo "Please provide a database name";
read -p "Database name: " DB;
fi
dropdb $DB 2>/dev/null; createdb $DB;
27 changes: 27 additions & 0 deletions backend/seeding/seeder/auth.seeder.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { DataSource, MoreThan, Repository } from 'typeorm';
import { Seeder, SeederFactoryManager } from 'typeorm-extension';

import { Auth } from '../../src/entity/auth.entity';

export default class AuthSeeder implements Seeder {
public async run(dataSource: DataSource, factoryManager: SeederFactoryManager) {
const repository: Repository<Auth> = dataSource.getRepository(Auth);
repository.delete({ id: MoreThan(0) });
//await repository.insert([
// {
// firstName: 'Caleb',
// lastName: 'Barrows',
// email: 'caleb.barrows@gmail.com',
// },
//]);

// ---------------------------------------------------

const authFactory = await factoryManager.get(Auth);
// save 1 factory generated entity, to the database
//await authFactory.save();

// save 5 factory generated entities, to the database
await authFactory.saveMany(1000);
}
}
3 changes: 0 additions & 3 deletions backend/src/common/README.md

This file was deleted.

117 changes: 115 additions & 2 deletions backend/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,11 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d"
integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==

"@faker-js/faker@^7.6.0":
version "7.6.0"
resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-7.6.0.tgz#9ea331766084288634a9247fcd8b84f16ff4ba07"
integrity sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==

"@hapi/address@^4.0.1":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-4.1.0.tgz#d60c5c0d930e77456fdcde2598e77302e2955e1d"
Expand Down Expand Up @@ -1011,6 +1016,13 @@
"@types/qs" "*"
"@types/serve-static" "*"

"@types/faker@^6.6.9":
version "6.6.9"
resolved "https://registry.yarnpkg.com/@types/faker/-/faker-6.6.9.tgz#1064e7c46be58388fa326e2f918a4f02ab740a7a"
integrity sha512-Y9YYm5L//8ooiiknO++4Gr539zzdI0j3aXnOBjo1Vk+kTvffY10GuE2wn78AFPECwZ5MYGTjiDVw1naLLdDimw==
dependencies:
faker "*"

"@types/graceful-fs@^4.1.3":
version "4.1.6"
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
Expand Down Expand Up @@ -2210,6 +2222,11 @@ depd@2.0.0:
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==

destr@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.2.tgz#7ba9befcafb645a50e76b260449c63927b51e22f"
integrity sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==

destroy@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
Expand Down Expand Up @@ -2274,6 +2291,13 @@ eastasianwidth@^0.2.0:
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==

ebec@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ebec/-/ebec-1.0.0.tgz#e05c067818688a29ff359f138d43b4f5786b7f4f"
integrity sha512-tPS/jSTrzChdC/EkxGcHRHvLZYnEbEepqvnOr8PnwsHlOpoKsQbQv8VZf6NmdR1AXyj+6suiq+1AoOXrKtKkTw==
dependencies:
smob "^1.0.0"

ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
Expand Down Expand Up @@ -2723,6 +2747,11 @@ external-editor@^3.0.3:
iconv-lite "^0.4.24"
tmp "^0.0.33"

faker@*:
version "6.6.6"
resolved "https://registry.yarnpkg.com/faker/-/faker-6.6.6.tgz#e9529da0109dca4c7c5dbfeaadbd9234af943033"
integrity sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg==

fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
Expand Down Expand Up @@ -2831,6 +2860,11 @@ flat-cache@^3.0.4:
flatted "^3.1.0"
rimraf "^3.0.2"

flat@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==

flatted@^3.1.0:
version "3.2.7"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
Expand Down Expand Up @@ -3030,6 +3064,16 @@ glob@^9.2.0:
minipass "^4.2.4"
path-scurry "^1.6.1"

glob@^9.3.2:
version "9.3.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21"
integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==
dependencies:
fs.realpath "^1.0.0"
minimatch "^8.0.2"
minipass "^4.2.4"
path-scurry "^1.6.1"

globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
Expand Down Expand Up @@ -3885,6 +3929,11 @@ jest@29.3.1:
import-local "^3.0.2"
jest-cli "^29.3.1"

jiti@^1.18.2:
version "1.18.2"
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd"
integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==

js-sdsl@^4.1.4:
version "4.4.0"
resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430"
Expand Down Expand Up @@ -4046,6 +4095,17 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"

locter@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/locter/-/locter-1.1.0.tgz#b66f650945ebe7f54704e068e3b59750620e1805"
integrity sha512-dZD6T3CSeVtJ+37ZArPtk/QROvwpZAfydBDP5qDpITBPoAd3EBm/SKPmzkSRiHhkZbvB2BrW0kj/QglYXVT4Zw==
dependencies:
destr "^1.2.2"
ebec "^1.0.0"
flat "^5.0.2"
glob "^9.3.2"
jiti "^1.18.2"

lodash.memoize@4.x:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
Expand Down Expand Up @@ -4079,6 +4139,13 @@ log-update@^4.0.0:
slice-ansi "^4.0.0"
wrap-ansi "^6.2.0"

lower-case@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
dependencies:
tslib "^2.0.3"

lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
Expand Down Expand Up @@ -4306,6 +4373,14 @@ neo-async@^2.6.2:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==

no-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
dependencies:
lower-case "^2.0.2"
tslib "^2.0.3"

node-abort-controller@^3.0.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
Expand Down Expand Up @@ -4540,6 +4615,14 @@ parseurl@~1.3.3:
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==

pascal-case@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
dependencies:
no-case "^3.0.4"
tslib "^2.0.3"

path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
Expand Down Expand Up @@ -4801,6 +4884,13 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==

rapiq@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/rapiq/-/rapiq-0.8.0.tgz#f9eee0bf5bf41b92916750cc6b066c0928a8c2b9"
integrity sha512-qAWUHJP++IDKE9ul9mwXoix45a6Hne3wDiqTd7BhoRNVOQv2gQvAlCOWCQCNTbQA/Ia9jW5ugcOmbd4eRGklSQ==
dependencies:
smob "^0.1.0"

raw-body@2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
Expand Down Expand Up @@ -5154,6 +5244,16 @@ slice-ansi@^5.0.0:
ansi-styles "^6.0.0"
is-fullwidth-code-point "^4.0.0"

smob@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/smob/-/smob-0.1.0.tgz#d61b307208d2510b3faf98c166ffe4e9e94f17a2"
integrity sha512-u6ezVF7hN3AxA1onkbMsl46XZr1HYrtMksmckSVpkLI8bYJ5I34kHMvDZk8qNCfA0y54VnhWqCoU6DQMMStzpw==

smob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/smob/-/smob-1.0.0.tgz#f4e7df1292dce83981ffc651b49a7823c4a4f77c"
integrity sha512-fnePEPpgGjAdBDk0nV7L9jcStbbcUsKS5TC+RYambCSU9Dm1k2rqDivdg5LBRVWF/NXe0Rq8yfnKKQI08kSXIg==

socket.io-adapter@~2.5.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12"
Expand Down Expand Up @@ -5592,7 +5692,7 @@ tsconfig-paths@^4.1.2:
minimist "^1.2.6"
strip-bom "^3.0.0"

tslib@2.5.0, tslib@^2.1.0, tslib@^2.5.0:
tslib@2.5.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
Expand Down Expand Up @@ -5653,6 +5753,19 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==

typeorm-extension@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/typeorm-extension/-/typeorm-extension-2.7.0.tgz#066c2307b0a6ec1acd01e32fd3fc82229322b78f"
integrity sha512-ef5x+F635ztLE/4Li1yCCwyf+G6MeHBhIQVNqbgDL20FQpCly0rpq9itrohCxbpu5diLFcYkdZ+8lGkHZqnxBg==
dependencies:
"@faker-js/faker" "^7.6.0"
locter "^1.1.0"
pascal-case "^3.1.2"
rapiq "^0.8.0"
reflect-metadata "^0.1.13"
smob "^1.0.0"
yargs "^17.7.1"

typeorm-naming-strategies@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/typeorm-naming-strategies/-/typeorm-naming-strategies-4.1.0.tgz#1ec6eb296c8d7b69bb06764d5b9083ff80e814a9"
Expand Down Expand Up @@ -5991,7 +6104,7 @@ yargs@^16.0.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"

yargs@^17.3.1, yargs@^17.6.2:
yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.1:
version "17.7.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967"
integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==
Expand Down

0 comments on commit 31c705d

Please sign in to comment.