mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 08:28:19 +01:00
refactor(database): ♻️ Use new Drizzle count API
This commit is contained in:
parent
7f17074d16
commit
ce781f3336
|
|
@ -1,7 +1,7 @@
|
|||
import { apiRoute, applyConfig, auth, idValidator } from "@/api";
|
||||
import { createRoute } from "@hono/zod-openapi";
|
||||
import type { Marker as ApiMarker } from "@versia/client/types";
|
||||
import { and, count, eq } from "drizzle-orm";
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import { z } from "zod";
|
||||
import { db } from "~/drizzle/db";
|
||||
import { Markers, RolePermissions } from "~/drizzle/schema";
|
||||
|
|
@ -140,22 +140,15 @@ export default apiRoute((app) => {
|
|||
),
|
||||
});
|
||||
|
||||
const totalCount = await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Markers)
|
||||
.where(
|
||||
and(
|
||||
eq(Markers.userId, user.id),
|
||||
eq(Markers.timeline, "home"),
|
||||
),
|
||||
);
|
||||
const totalCount = await db.$count(
|
||||
Markers,
|
||||
and(eq(Markers.userId, user.id), eq(Markers.timeline, "home")),
|
||||
);
|
||||
|
||||
if (found?.noteId) {
|
||||
markers.home = {
|
||||
last_read_id: found.noteId,
|
||||
version: totalCount[0].count,
|
||||
version: totalCount,
|
||||
updated_at: new Date(found.createdAt).toISOString(),
|
||||
};
|
||||
}
|
||||
|
|
@ -170,22 +163,18 @@ export default apiRoute((app) => {
|
|||
),
|
||||
});
|
||||
|
||||
const totalCount = await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Markers)
|
||||
.where(
|
||||
and(
|
||||
eq(Markers.userId, user.id),
|
||||
eq(Markers.timeline, "notifications"),
|
||||
),
|
||||
);
|
||||
const totalCount = await db.$count(
|
||||
Markers,
|
||||
and(
|
||||
eq(Markers.userId, user.id),
|
||||
eq(Markers.timeline, "notifications"),
|
||||
),
|
||||
);
|
||||
|
||||
if (found?.notificationId) {
|
||||
markers.notifications = {
|
||||
last_read_id: found.notificationId,
|
||||
version: totalCount[0].count,
|
||||
version: totalCount,
|
||||
updated_at: new Date(found.createdAt).toISOString(),
|
||||
};
|
||||
}
|
||||
|
|
@ -222,21 +211,14 @@ export default apiRoute((app) => {
|
|||
.returning()
|
||||
)[0];
|
||||
|
||||
const totalCount = await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Markers)
|
||||
.where(
|
||||
and(
|
||||
eq(Markers.userId, user.id),
|
||||
eq(Markers.timeline, "home"),
|
||||
),
|
||||
);
|
||||
const totalCount = await db.$count(
|
||||
Markers,
|
||||
and(eq(Markers.userId, user.id), eq(Markers.timeline, "home")),
|
||||
);
|
||||
|
||||
markers.home = {
|
||||
last_read_id: homeId,
|
||||
version: totalCount[0].count,
|
||||
version: totalCount,
|
||||
updated_at: new Date(insertedMarker.createdAt).toISOString(),
|
||||
};
|
||||
}
|
||||
|
|
@ -253,21 +235,17 @@ export default apiRoute((app) => {
|
|||
.returning()
|
||||
)[0];
|
||||
|
||||
const totalCount = await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Markers)
|
||||
.where(
|
||||
and(
|
||||
eq(Markers.userId, user.id),
|
||||
eq(Markers.timeline, "notifications"),
|
||||
),
|
||||
);
|
||||
const totalCount = await db.$count(
|
||||
Markers,
|
||||
and(
|
||||
eq(Markers.userId, user.id),
|
||||
eq(Markers.timeline, "notifications"),
|
||||
),
|
||||
);
|
||||
|
||||
markers.notifications = {
|
||||
last_read_id: notificationsId,
|
||||
version: totalCount[0].count,
|
||||
version: totalCount,
|
||||
updated_at: new Date(insertedMarker.createdAt).toISOString(),
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import {
|
|||
Collection as CollectionSchema,
|
||||
Note as NoteSchema,
|
||||
} from "@versia/federation/schemas";
|
||||
import { and, count, eq, inArray } from "drizzle-orm";
|
||||
import { and, eq, inArray } from "drizzle-orm";
|
||||
import { z } from "zod";
|
||||
import { db } from "~/drizzle/db";
|
||||
import { Notes } from "~/drizzle/schema";
|
||||
|
|
@ -102,19 +102,13 @@ export default apiRoute((app) =>
|
|||
NOTES_PER_PAGE * (pageNumber - 1),
|
||||
);
|
||||
|
||||
const totalNotes = (
|
||||
await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Notes)
|
||||
.where(
|
||||
and(
|
||||
eq(Notes.authorId, uuid),
|
||||
inArray(Notes.visibility, ["public", "unlisted"]),
|
||||
),
|
||||
)
|
||||
)[0].count;
|
||||
const totalNotes = await db.$count(
|
||||
Notes,
|
||||
and(
|
||||
eq(Notes.authorId, uuid),
|
||||
inArray(Notes.visibility, ["public", "unlisted"]),
|
||||
),
|
||||
);
|
||||
|
||||
const json = {
|
||||
first: new URL(
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import {
|
|||
type InferInsertModel,
|
||||
type InferSelectModel,
|
||||
type SQL,
|
||||
count,
|
||||
desc,
|
||||
eq,
|
||||
inArray,
|
||||
|
|
@ -340,13 +339,7 @@ export class Instance extends BaseInterface<typeof Instances> {
|
|||
});
|
||||
}
|
||||
|
||||
static async getCount() {
|
||||
return (
|
||||
await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Instances)
|
||||
)[0].count;
|
||||
static getCount(): Promise<number> {
|
||||
return db.$count(Instances);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import {
|
|||
type InferInsertModel,
|
||||
type SQL,
|
||||
and,
|
||||
count,
|
||||
desc,
|
||||
eq,
|
||||
inArray,
|
||||
|
|
@ -349,16 +348,10 @@ export class Note extends BaseInterface<typeof Notes, StatusWithRelations> {
|
|||
* @returns The number of notes in the database
|
||||
*/
|
||||
static async getCount(): Promise<number> {
|
||||
return (
|
||||
await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Notes)
|
||||
.where(
|
||||
sql`EXISTS (SELECT 1 FROM "Users" WHERE "Users"."id" = ${Notes.authorId} AND "Users"."instanceId" IS NULL)`,
|
||||
)
|
||||
)[0].count;
|
||||
return await db.$count(
|
||||
Notes,
|
||||
sql`EXISTS (SELECT 1 FROM "Users" WHERE "Users"."id" = ${Notes.authorId} AND "Users"."instanceId" IS NULL)`,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ import {
|
|||
type InferInsertModel,
|
||||
type SQL,
|
||||
and,
|
||||
count,
|
||||
countDistinct,
|
||||
desc,
|
||||
eq,
|
||||
|
|
@ -327,15 +326,8 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
|||
);
|
||||
}
|
||||
|
||||
static async getCount() {
|
||||
return (
|
||||
await db
|
||||
.select({
|
||||
count: count(),
|
||||
})
|
||||
.from(Users)
|
||||
.where(isNull(Users.instanceId))
|
||||
)[0].count;
|
||||
static getCount(): Promise<number> {
|
||||
return db.$count(Users, isNull(Users.instanceId));
|
||||
}
|
||||
|
||||
static async getActiveInPeriod(milliseconds: number) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue