diff --git a/database/package.json b/database/package.json index d69926340..ff238ee13 100644 --- a/database/package.json +++ b/database/package.json @@ -36,7 +36,9 @@ "typescript": "^4.3.5" }, "dependencies": { + "crypto": "^1.0.1", "dotenv": "^10.0.0", + "faker": "^5.5.3", "mysql2": "^2.3.0", "reflect-metadata": "^0.1.13", "ts-mysql-migrate": "^1.0.2", diff --git a/database/src/factories/user.factory.ts b/database/src/factories/user.factory.ts new file mode 100644 index 000000000..7fbccbdb3 --- /dev/null +++ b/database/src/factories/user.factory.ts @@ -0,0 +1,26 @@ +import Faker from 'faker' +import { define } from 'typeorm-seeding' +import { User } from '../../entity/User' +import { randomBytes } from 'crypto' + +interface UserContext { + pubkey?: Buffer + email?: string + firstName?: string + lastName?: string + username?: string + disabled?: boolean +} + +define(User, (faker: typeof Faker, context: UserContext) => { + const user = new User() + + user.pubkey = context.pubkey ? context.pubkey : randomBytes(32) + user.email = context.email ? context.email : faker.internet.email() + user.firstName = context.firstName ? context.firstName : faker.name.firstName() + user.lastName = context.lastName ? context.lastName : faker.name.lastName() + user.username = context.username ? context.username : faker.internet.userName() + user.disabled = context.disabled ? context.disabled : false + + return user +}) diff --git a/database/src/seeds/create-user.seed.ts b/database/src/seeds/create-user.seed.ts new file mode 100644 index 000000000..b95d1bbe3 --- /dev/null +++ b/database/src/seeds/create-user.seed.ts @@ -0,0 +1,8 @@ +import { Factory, Seeder } from 'typeorm-seeding' +import { User } from '../../entity/User' + +export class CreateUser implements Seeder { + public async run(factory: Factory): Promise { + await factory(User)().create() + } +} diff --git a/database/yarn.lock b/database/yarn.lock index 7ea8914c1..25b236371 100644 --- a/database/yarn.lock +++ b/database/yarn.lock @@ -647,6 +647,11 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +crypto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037" + integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig== + debug@^2.2.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1050,6 +1055,11 @@ faker@4.1.0: resolved "https://registry.yarnpkg.com/faker/-/faker-4.1.0.tgz#1e45bbbecc6774b3c195fad2835109c6d748cc3f" integrity sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8= +faker@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.3.tgz#c57974ee484431b25205c2c8dc09fda861e51e0e" + integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== + 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"