40d3a66055
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
36 lines
820 B
TypeScript
36 lines
820 B
TypeScript
import { eq } from "drizzle-orm";
|
|
import * as schema from "@db/schema";
|
|
import type { InsertUser } from "@db/schema";
|
|
import { getDb } from "./connection";
|
|
|
|
export async function findUserByUnionId(unionId: string) {
|
|
const rows = await getDb()
|
|
.select()
|
|
.from(schema.users)
|
|
.where(eq(schema.users.unionId, unionId))
|
|
.limit(1);
|
|
return rows.at(0);
|
|
}
|
|
|
|
export async function findUserById(id: number) {
|
|
const rows = await getDb()
|
|
.select()
|
|
.from(schema.users)
|
|
.where(eq(schema.users.id, id))
|
|
.limit(1);
|
|
return rows.at(0);
|
|
}
|
|
|
|
export async function upsertUser(data: InsertUser) {
|
|
await getDb()
|
|
.insert(schema.users)
|
|
.values(data)
|
|
.onDuplicateKeyUpdate({
|
|
set: {
|
|
lastSignInAt: new Date(),
|
|
name: data.name,
|
|
avatar: data.avatar,
|
|
},
|
|
});
|
|
}
|