Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/data/it/database.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
use crate::{data::datetime::unix::unix_ts_gen, utils::seeder::{self, gen_range}};
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub fn mongodb_objectid() -> String {
// 6359388c80616b1fc6d7ec71 parts:
// 6359388c -- epoc timestamp 1666791564 4 bytes
// 80616b1fc6 -- random value generated once per process. 551390224326 5 bytes
// d7ec71 -- incrementing counter which starts from random value (ID) 14150769 3 bytes

let min: u64 = 4294967296;
let max: u64 = 1099511627776;
let rand = seeder::gen_range(min..max);

let min = 65536;
let max = 16777216;
let counter = seeder::gen_range(min..max);
Comment on lines +15 to +17
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This wouldn't produce an incrementing counter, the generation wouldn't be a stable series of mongodb object ids. I think we have a counter function or 2 that are stable that should be used instead.


let ts = unix_ts_gen();

format!("{:02x}{:02x}{:02x}", ts.1, rand, counter)
}
1 change: 1 addition & 0 deletions src/data/it/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ pub mod macosx_versions;
pub mod operating_systems;
pub mod programming_languages;
pub mod windows_versions;
pub mod database;
89 changes: 89 additions & 0 deletions src/locales/en/database/database.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
use crate::{data::datetime::unix::unix_ts_gen, utils::seeder::{self, gen_range}};
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub fn collation() -> String {
EN_COLLATION[seeder::gen_range(0..EN_COLLATION_LEN)].to_string()
}

#[wasm_bindgen]
pub fn column() -> String {
EN_COLUMN[seeder::gen_range(0..EN_COLUMN_LEN)].to_string()
}

#[wasm_bindgen]
pub fn engine() -> String {
EN_ENGINE[seeder::gen_range(0..EN_ENGINE_LEN)].to_string()
}

#[wasm_bindgen]
pub fn column_type() -> String {
EN_COLUMN_TYPE[seeder::gen_range(0..EN_COLUMN_TYPE_LEN)].to_string()
}

static EN_COLLATION: [&'static str; 7] = [
"utf8_unicode_ci",
"utf8_general_ci",
"utf8_bin",
"ascii_bin",
"ascii_general_ci",
"cp1250_bin",
"cp1250_general_ci",
];
static EN_COLLATION_LEN: usize = EN_COLLATION.len();

static EN_COLUMN: [&'static str; 14] = [
"id",
"title",
"name",
"email",
"phone",
"token",
"group",
"category",
"password",
"comment",
"avatar",
"status",
"createdAt",
"updatedAt",
];
static EN_COLUMN_LEN: usize = EN_COLUMN.len();

static EN_ENGINE: [&'static str; 6] = [
"InnoDB",
"MyISAM",
"MEMORY",
"CSV",
"BLACKHOLE",
"ARCHIVE"
];
static EN_ENGINE_LEN: usize = EN_ENGINE.len();

static EN_COLUMN_TYPE: [&'static str; 24] = [
"int",
"varchar",
"text",
"date",
"datetime",
"tinyint",
"time",
"timestamp",
"smallint",
"mediumint",
"bigint",
"decimal",
"float",
"double",
"real",
"bit",
"boolean",
"serial",
"blob",
"binary",
"enum",
"set",
"geometry",
"point",
];
static EN_COLUMN_TYPE_LEN: usize = EN_COLUMN_TYPE.len();
1 change: 1 addition & 0 deletions src/locales/en/database/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub mod database;
3 changes: 2 additions & 1 deletion src/locales/en/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ pub mod color;
pub mod app;
pub mod lorem;
pub mod team;
pub mod education;
pub mod commerce;
pub mod database;
pub mod education;