server/classes/functions/application.ts

37 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { Application as APIApplication } from "@versia/client/types";
import type { InferSelectModel } from "drizzle-orm";
import { db } from "~/drizzle/db";
import type { Applications } from "~/drizzle/schema";
2023-09-12 22:48:10 +02:00
export type Application = InferSelectModel<typeof Applications>;
2023-09-12 22:48:10 +02:00
/**
* Retrieves the application associated with the given access token.
* @param token The access token to retrieve the application for.
* @returns The application associated with the given access token, or null if no such application exists.
*/
export const getFromToken = async (
2024-04-07 07:30:49 +02:00
token: string,
): Promise<Application | null> => {
const result = await db.query.Tokens.findFirst({
where: (tokens, { eq }) => eq(tokens.accessToken, token),
with: {
2024-04-07 07:30:49 +02:00
application: true,
},
});
return result?.application || null;
};
2023-09-22 00:42:59 +02:00
/**
* Converts this application to an API application.
* @returns The API application representation of this application.
*/
export const applicationToApi = (app: Application): APIApplication => {
2024-04-07 07:30:49 +02:00
return {
name: app.name,
website: app.website,
vapid_key: app.vapidKey,
2024-04-07 07:30:49 +02:00
};
};