2025-06-15 04:38:20 +02:00
|
|
|
import { Instance, User } from "@versia/kit/db";
|
|
|
|
|
import { Users } from "@versia/kit/tables";
|
2025-02-26 00:00:21 +01:00
|
|
|
import { and, eq, isNull } from "drizzle-orm";
|
2025-04-10 19:15:31 +02:00
|
|
|
import { parseUserAddress } from "@/api";
|
2025-02-26 00:00:21 +01:00
|
|
|
|
|
|
|
|
export const retrieveUser = async (
|
|
|
|
|
usernameOrHandle: string,
|
|
|
|
|
): Promise<User | null> => {
|
|
|
|
|
const { username, domain } = parseUserAddress(usernameOrHandle);
|
|
|
|
|
|
|
|
|
|
const instance = domain ? await Instance.resolveFromHost(domain) : null;
|
|
|
|
|
|
|
|
|
|
const user = await User.fromSql(
|
|
|
|
|
and(
|
|
|
|
|
eq(Users.username, username),
|
|
|
|
|
instance
|
|
|
|
|
? eq(Users.instanceId, instance.data.id)
|
|
|
|
|
: isNull(Users.instanceId),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return user;
|
|
|
|
|
};
|