thibaultmeyer / cuid-java

Collision-resistant ids optimized for horizontal scaling and performance
MIT License
38 stars 2 forks source link

Please Support Parameterized Length #4

Closed IamManchanda closed 1 year ago

IamManchanda commented 1 year ago

Is your feature request related to a problem? Please describe. When the use-case is simply something like username or URL disambiguation where you don't need strong uniqueness guarantees.

Describe the solution you'd like Parameterized Length in CUID 2 https://github.com/paralleldrive/cuid2#parameterized-length

Describe alternatives you've considered N/A

Additional context official javascript example of same

import { init } from '@paralleldrive/cuid2';
const length = 10; // 50% odds of collision after ~51,386,368 ids
const cuid = init({ length });
console.log(cuid()); // nw8zzfaa4v
IamManchanda commented 1 year ago

@thibaultmeyer - FWIW, I was looking at the code and I think this can be made public https://github.com/thibaultmeyer/cuid-java/blob/release/2.0.0/src/main/java/io/github/thibaultmeyer/cuid/CUID.java#L72 for same ... or maybe you would want some init configuration ... let me leave it upon you :)

thibaultmeyer commented 1 year ago

Hi @IamManchanda,

This is exactly the solution I chose to meet the request. A new version should be available within 1 or 2 hours on Maven Central.

IamManchanda commented 1 year ago

Great to know @thibaultmeyer 🙏👌🙌

IamManchanda commented 1 year ago

@thibaultmeyer - Please don't mind but did you push the release to Maven Central? as not yet available https://mvnrepository.com/artifact/io.github.thibaultmeyer/cuid as of now (neither able to install it in my IntelliJ)

thibaultmeyer commented 1 year ago

@IamManchanda

mvnrepository is not "real time", new version will appear in few hours.

<dependency>
    <groupId>io.github.thibaultmeyer</groupId>
    <artifactId>cuid</artifactId>
    <version>2.0.1</version>
</dependency>

I just try on a dummy project, no problem, IntelliJ download jar from Maven Central.

Downloading from central: https://repo.maven.apache.org/maven2/io/github/thibaultmeyer/cuid/2.0.1/cuid-2.0.1.pom
Downloaded from central: https://repo.maven.apache.org/maven2/io/github/thibaultmeyer/cuid/2.0.1/cuid-2.0.1.pom (6.7 kB at 25 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/io/github/thibaultmeyer/cuid/2.0.1/cuid-2.0.1.jar
Downloaded from central: https://repo.maven.apache.org/maven2/io/github/thibaultmeyer/cuid/2.0.1/cuid-2.0.1.jar (11 kB at 130 kB/s)
JamoCA commented 1 year ago

So the change to return a "Parameterized Length" simply involves performing a left trim at X characters? That's a simple string function that can be performed post-CUID without having to upgrade the library, right?

IamManchanda commented 1 year ago

Thanks @thibaultmeyer ... It's working now since last 24-30 hours... thank you :)

IamManchanda commented 1 year ago

@JamoCA - Now this library supports both these ways to generate CUID v2

final CUID cuid = CUID.randomCUID2();
System.out.println("CUID (Version 2): " + cuid); // default 24 chars

and also

final CUID cuid32 = CUID.randomCUID2(32); // or whatever number you wanna add
System.out.println("CUID (Version 2), 32: " + cuid32); // 32 chars

PS: I do think Github Readme should be updated to let devs know of this new addition

thibaultmeyer commented 1 year ago

Yes I will update the readme

thibaultmeyer commented 1 year ago

Done

IamManchanda commented 1 year ago

Thanks @thibaultmeyer 👍🙏