From a2da7c496e9a3741d165ddfe6128b50837fec361 Mon Sep 17 00:00:00 2001 From: Shinigami Date: Tue, 3 May 2022 15:48:20 +0200 Subject: refactor!: reorganize src folder (#909) --- src/modules/database/index.ts | 75 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/modules/database/index.ts (limited to 'src/modules/database') diff --git a/src/modules/database/index.ts b/src/modules/database/index.ts new file mode 100644 index 00000000..073d3f8a --- /dev/null +++ b/src/modules/database/index.ts @@ -0,0 +1,75 @@ +import type { Faker } from '../..'; + +/** + * Module to generate database related entries. + */ +export class Database { + constructor(private readonly faker: Faker) { + // Bind `this` so namespaced is working correctly + for (const name of Object.getOwnPropertyNames(Database.prototype)) { + if (name === 'constructor' || typeof this[name] !== 'function') { + continue; + } + this[name] = this[name].bind(this); + } + } + + /** + * Returns a random database column name. + * + * @example + * faker.database.column() // 'createdAt' + */ + column(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.database.column + ); + } + + /** + * Returns a random database column type. + * + * @example + * faker.database.type() // 'timestamp' + */ + type(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.database.type + ); + } + + /** + * Returns a random database collation. + * + * @example + * faker.database.collation() // 'utf8_unicode_ci' + */ + collation(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.database.collation + ); + } + + /** + * Returns a random database engine. + * + * @example + * faker.database.engine() // 'ARCHIVE' + */ + engine(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.database.engine + ); + } + + /** + * Returns a MongoDB [ObjectId](https://docs.mongodb.com/manual/reference/method/ObjectId/) string. + * + * @example + * faker.database.mongodbObjectId() // 'e175cac316a79afdd0ad3afb' + */ + mongodbObjectId(): string { + // strip the "0x" from the hexadecimal output + return this.faker.datatype.hexadecimal(24).replace('0x', '').toLowerCase(); + } +} -- cgit v1.2.3