aboutsummaryrefslogtreecommitdiff
path: root/src/modules/database
diff options
context:
space:
mode:
authorShinigami <[email protected]>2022-05-03 15:48:20 +0200
committerGitHub <[email protected]>2022-05-03 15:48:20 +0200
commita2da7c496e9a3741d165ddfe6128b50837fec361 (patch)
tree88d371bc19487bc8a34d9043035aed8e4fedd7d5 /src/modules/database
parentcc46a0c19af2752b6210c24b715fcce20197b6d9 (diff)
downloadfaker-a2da7c496e9a3741d165ddfe6128b50837fec361.tar.xz
faker-a2da7c496e9a3741d165ddfe6128b50837fec361.zip
refactor!: reorganize src folder (#909)
Diffstat (limited to 'src/modules/database')
-rw-r--r--src/modules/database/index.ts75
1 files changed, 75 insertions, 0 deletions
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();
+ }
+}