Skip to Content
CodingPrefixed UUIDs

Prefixed UUIDs

You are presented with the ID, 837eb1fb-7b56-434d-a152-4b1847c7b3b4. Is it a tenant, a user, a blog post, what? No way to tell easily. To make things clearer, prefix UUIDs with an identifier:

company_837eb1fb-7b56-434d-a152-4b1847c7b3b4 is clearly a company.
user_837eb1fb-7b56-434d-a152-4b1847c7b3b4 is clearly a user.

This makes it easier to identify what the UUID is for, especially when debugging or looking at logs.

Prisma setup with Postgres

Define models using database @default dbgenerated:

model User { id String @id @default(dbgenerated("prefix_uuid('user_'::text)")) // ... }

Run the following command: npx prisma migrate dev --create-only

Add the following to the top of the created migration SQL file:

CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE OR REPLACE FUNCTION prefix_uuid(prefix text) RETURNS text AS $$ BEGIN RETURN concat(prefix, gen_random_uuid()); END; $$ LANGUAGE PLPGSQL VOLATILE;

Run npx prisma migrate dev