refactor(database): Remove dependency on pg_uuidv7 extension

This commit is contained in:
Jesse Wierzbinski 2025-03-30 22:10:33 +02:00
parent 2bb3731187
commit 37f68bbffd
No known key found for this signature in database
37 changed files with 2465 additions and 4 deletions

View file

@ -1,6 +1,7 @@
import { afterAll, describe, expect, test } from "bun:test";
import { randomString } from "@/math";
import { Application } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { config } from "~/config.ts";
import { fakeRequest, getTestUsers } from "~/tests/utils";
@ -8,6 +9,7 @@ const { users, deleteUsers, passwords } = await getTestUsers(1);
// Create application
const application = await Application.insert({
id: randomUUIDv7(),
name: "Test Application",
clientId: randomString(32, "hex"),
secret: "test",

View file

@ -1,6 +1,7 @@
import { afterAll, describe, expect, test } from "bun:test";
import { randomString } from "@/math";
import { Application } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { config } from "~/config.ts";
import { fakeRequest, getTestUsers } from "~/tests/utils";
@ -10,6 +11,7 @@ const newPassword = randomString(16, "hex");
// Create application
const application = await Application.insert({
id: randomUUIDv7(),
name: "Test Application",
clientId: randomString(32, "hex"),
secret: "test",

View file

@ -1,8 +1,8 @@
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
import { RolePermission } from "@versia/client/schemas";
import { Role } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { generateClient, getTestUsers } from "~/tests/utils";
const { users, deleteUsers } = await getTestUsers(2);
let role: Role;
let higherPriorityRole: Role;
@ -10,6 +10,7 @@ let higherPriorityRole: Role;
beforeAll(async () => {
// Create new role
role = await Role.insert({
id: randomUUIDv7(),
name: "test",
permissions: [RolePermission.ManageRoles],
priority: 2,
@ -24,6 +25,7 @@ beforeAll(async () => {
// Create a role with higher priority than the user's role
higherPriorityRole = await Role.insert({
id: randomUUIDv7(),
name: "higherPriorityRole",
permissions: [RolePermission.ManageRoles],
priority: 3, // Higher priority than the user's role

View file

@ -1,6 +1,7 @@
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
import { RolePermission } from "@versia/client/schemas";
import { Role } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { generateClient, getTestUsers } from "~/tests/utils";
const { users, deleteUsers } = await getTestUsers(2);
@ -9,6 +10,7 @@ let role: Role;
beforeAll(async () => {
// Create new role
role = await Role.insert({
id: randomUUIDv7(),
name: "test",
permissions: [RolePermission.ManageRoles],
priority: 2,

View file

@ -5,6 +5,7 @@ import {
CredentialApplication as CredentialApplicationSchema,
} from "@versia/client/schemas";
import { Application } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
import { z } from "zod";
@ -66,6 +67,7 @@ export default apiRoute((app) =>
context.req.valid("json");
const app = await Application.insert({
id: randomUUIDv7(),
name: client_name,
redirectUri: redirect_uris.join("\n"),
scopes: scopes.join(" "),

View file

@ -4,6 +4,7 @@ import { CustomEmoji as CustomEmojiSchema } from "@versia/client/schemas";
import { RolePermission } from "@versia/client/schemas";
import { Emoji, Media } from "@versia/kit/db";
import { Emojis } from "@versia/kit/tables";
import { randomUUIDv7 } from "bun";
import { and, eq, isNull, or } from "drizzle-orm";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
@ -124,6 +125,7 @@ export default apiRoute((app) =>
});
const emoji = await Emoji.insert({
id: randomUUIDv7(),
shortcode,
mediaId: media.id,
visibleInPicker: true,

View file

@ -7,6 +7,7 @@ import {
import { RolePermission } from "@versia/client/schemas";
import { db } from "@versia/kit/db";
import { Markers } from "@versia/kit/tables";
import { randomUUIDv7 } from "bun";
import { type SQL, and, eq } from "drizzle-orm";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
@ -189,6 +190,7 @@ export default apiRoute((app) => {
await db
.insert(Markers)
.values({
id: randomUUIDv7(),
userId: user.id,
timeline: "home",
noteId: homeId,
@ -218,6 +220,7 @@ export default apiRoute((app) => {
await db
.insert(Markers)
.values({
id: randomUUIDv7(),
userId: user.id,
timeline: "notifications",
notificationId: notificationsId,

View file

@ -6,6 +6,7 @@ import {
} from "@versia/client/schemas";
import { RolePermission } from "@versia/client/schemas";
import { PushSubscription } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
import { ApiError } from "~/classes/errors/api-error";
@ -64,6 +65,7 @@ export default apiRoute((app) =>
await PushSubscription.clearAllOfToken(token);
const ps = await PushSubscription.insert({
id: randomUUIDv7(),
alerts: data.alerts,
policy,
endpoint: subscription.endpoint,

View file

@ -1,5 +1,6 @@
import { afterAll, beforeEach, describe, expect, test } from "bun:test";
import { PushSubscription } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { generateClient, getTestUsers } from "~/tests/utils";
const { users, tokens, deleteUsers } = await getTestUsers(2);
@ -44,6 +45,7 @@ describe("/api/v1/push/subscriptions", () => {
await using client = await generateClient(users[1]);
await PushSubscription.insert({
id: randomUUIDv7(),
endpoint: "https://example.com",
alerts: {
update: true,
@ -76,6 +78,7 @@ describe("/api/v1/push/subscriptions", () => {
await using client = await generateClient(users[0]);
await PushSubscription.insert({
id: randomUUIDv7(),
endpoint: "https://example.com",
alerts: {
update: true,
@ -175,6 +178,7 @@ describe("/api/v1/push/subscriptions", () => {
await using client = await generateClient(users[0]);
await PushSubscription.insert({
id: randomUUIDv7(),
endpoint: "https://example.com",
alerts: {
update: true,
@ -217,6 +221,7 @@ describe("/api/v1/push/subscriptions", () => {
await using client = await generateClient(users[0]);
await PushSubscription.insert({
id: randomUUIDv7(),
endpoint: "https://example.com",
alerts: {
update: true,

View file

@ -1,6 +1,7 @@
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
import { RolePermission } from "@versia/client/schemas";
import { Role } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { generateClient, getTestUsers } from "~/tests/utils";
const { users, deleteUsers } = await getTestUsers(2);
@ -10,6 +11,7 @@ let higherPriorityRole: Role;
beforeAll(async () => {
// Create new role
role = await Role.insert({
id: randomUUIDv7(),
name: "test",
permissions: [RolePermission.ManageRoles],
priority: 2,
@ -24,6 +26,7 @@ beforeAll(async () => {
// Create a role with higher priority than the user's role
higherPriorityRole = await Role.insert({
id: randomUUIDv7(),
name: "higherPriorityRole",
permissions: [RolePermission.ManageRoles],
priority: 3, // Higher priority than the user's role
@ -173,6 +176,7 @@ describe("/api/v1/roles/:id", () => {
test("should delete role", async () => {
const newRole = await Role.insert({
id: randomUUIDv7(),
name: "test2",
permissions: [RolePermission.ManageRoles],
priority: 2,

View file

@ -1,6 +1,7 @@
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
import { RolePermission } from "@versia/client/schemas";
import { Role } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { config } from "~/config.ts";
import { generateClient, getTestUsers } from "~/tests/utils";
@ -10,6 +11,7 @@ let role: Role;
beforeAll(async () => {
// Create new role
role = await Role.insert({
id: randomUUIDv7(),
name: "test",
permissions: [RolePermission.ManageRoles],
priority: 10,

View file

@ -2,6 +2,7 @@ import { apiRoute, auth, handleZodError } from "@/api";
import { Role as RoleSchema } from "@versia/client/schemas";
import { RolePermission } from "@versia/client/schemas";
import { Role } from "@versia/kit/db";
import { randomUUIDv7 } from "bun";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
import { z } from "zod";
@ -105,6 +106,7 @@ export default apiRoute((app) => {
}
const newRole = await Role.insert({
id: randomUUIDv7(),
description,
icon,
name,

View file

@ -3,6 +3,7 @@ import { Status as StatusSchema } from "@versia/client/schemas";
import { RolePermission } from "@versia/client/schemas";
import { Note } from "@versia/kit/db";
import { Notes } from "@versia/kit/tables";
import { randomUUIDv7 } from "bun";
import { and, eq } from "drizzle-orm";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
@ -66,6 +67,7 @@ export default apiRoute((app) =>
}
const newReblog = await Note.insert({
id: randomUUIDv7(),
authorId: user.id,
reblogId: note.data.id,
visibility,

View file

@ -2,6 +2,7 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test";
import type { Status } from "@versia/client/schemas";
import { Media, db } from "@versia/kit/db";
import { Emojis } from "@versia/kit/tables";
import { randomUUIDv7 } from "bun";
import { eq } from "drizzle-orm";
import type { z } from "zod";
import { config } from "~/config.ts";
@ -17,6 +18,7 @@ afterAll(async () => {
beforeAll(async () => {
media = await Media.insert({
id: randomUUIDv7(),
content: {
"image/png": {
content: "https://example.com/test.png",
@ -24,7 +26,9 @@ beforeAll(async () => {
},
},
});
await db.insert(Emojis).values({
id: randomUUIDv7(),
shortcode: "test",
mediaId: media.id,
visibleInPicker: true,

View file

@ -6,6 +6,7 @@ import {
import { RolePermission } from "@versia/client/schemas";
import { db } from "@versia/kit/db";
import { FilterKeywords, Filters } from "@versia/kit/tables";
import { randomUUIDv7 } from "bun";
import type { SQL } from "drizzle-orm";
import { describeRoute } from "hono-openapi";
import { resolver, validator } from "hono-openapi/zod";
@ -139,6 +140,7 @@ export default apiRoute((app) => {
await db
.insert(Filters)
.values({
id: randomUUIDv7(),
title,
context: ctx,
filterAction: filter_action,
@ -160,6 +162,7 @@ export default apiRoute((app) => {
.insert(FilterKeywords)
.values(
keywords_attributes?.map((keyword) => ({
id: randomUUIDv7(),
filterId: newFilter.id,
keyword: keyword.keyword,
wholeWord: keyword.whole_word ?? false,