initial commit

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ife1391ed23a1e7f388b1b5eca90b9ea76a6a6964
This commit is contained in:
raf 2026-01-29 19:36:25 +03:00
commit ef28bdaeb4
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
63 changed files with 17292 additions and 0 deletions

35
src/utils/id.rs Normal file
View file

@ -0,0 +1,35 @@
use rand::Rng;
const CHARSET: &[u8] =
b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const ID_LENGTH: usize = 16;
/// Generate a random 16-character alphanumeric pakku ID
pub fn generate_pakku_id() -> String {
let mut rng = rand::rng();
(0..ID_LENGTH)
.map(|_| {
let idx = rng.random_range(0..CHARSET.len());
CHARSET[idx] as char
})
.collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_generate_pakku_id() {
let id = generate_pakku_id();
assert_eq!(id.len(), ID_LENGTH);
assert!(id.chars().all(|c| c.is_alphanumeric()));
}
#[test]
fn test_unique_ids() {
let id1 = generate_pakku_id();
let id2 = generate_pakku_id();
assert_ne!(id1, id2);
}
}