query builder insertOrIgnore

pull/354/head
Sven Sauleau 2023-03-01 09:20:59 +00:00
rodzic efdf8eed0e
commit 1b830d8df2
4 zmienionych plików z 19 dodań i 13 usunięć

Wyświetl plik

@ -9,10 +9,9 @@ export async function getPeers(db: Database): Promise<Array<String>> {
}
export async function addPeer(db: Database, domain: string): Promise<void> {
const query = `
INSERT OR IGNORE INTO peers (domain)
VALUES (?)
`
const query = db.qb.insertOrIgnore(`
INTO peers (domain) VALUES (?)
`)
const out = await db.prepare(query).bind(domain).run()
if (!out.success) {

Wyświetl plik

@ -17,6 +17,10 @@ const qb: QueryBuilder = {
epoch(): string {
return '00-00-00 00:00:00'
},
insertOrIgnore(q: string): string {
return `INSERT OR IGNORE ${q}`
},
}
export default function make({ DATABASE }: Pick<Env, 'DATABASE'>): Database {

Wyświetl plik

@ -29,6 +29,7 @@ export interface QueryBuilder {
jsonExtractIsNull(obj: string, prop: string): string
set(array: string): string
epoch(): string
insertOrIgnore(q: string): string
}
export async function getDatabase(env: Pick<Env, 'DATABASE'>): Promise<Database> {

Wyświetl plik

@ -10,11 +10,12 @@ const STATE_ACCEPTED = 'accepted'
// During a migration we move the followers from the old Actor to the new
export async function moveFollowers(db: Database, actor: Actor, followers: Array<string>): Promise<void> {
const batch = []
const stmt = db.prepare(`
INSERT OR IGNORE
const stmt = db.prepare(
db.qb.insertOrIgnore(`
INTO actor_following (id, actor_id, target_actor_id, target_actor_acct, state)
VALUES (?1, ?2, ?3, ?4, 'accepted');
VALUES (?1, ?2, ?3, ?4, 'accepted')
`)
)
const actorId = actor.id.toString()
const actorAcc = urlToHandle(actor.id)
@ -32,11 +33,12 @@ export async function moveFollowers(db: Database, actor: Actor, followers: Array
export async function moveFollowing(db: Database, actor: Actor, followingActors: Array<string>): Promise<void> {
const batch = []
const stmt = db.prepare(`
INSERT OR IGNORE
const stmt = db.prepare(
db.qb.insertOrIgnore(`
INTO actor_following (id, actor_id, target_actor_id, target_actor_acct, state)
VALUES (?1, ?2, ?3, ?4, 'accepted');
VALUES (?1, ?2, ?3, ?4, 'accepted')
`)
)
const actorId = actor.id.toString()
@ -56,10 +58,10 @@ export async function moveFollowing(db: Database, actor: Actor, followingActors:
export async function addFollowing(db: Database, actor: Actor, target: Actor, targetAcct: string): Promise<string> {
const id = crypto.randomUUID()
const query = `
INSERT OR IGNORE INTO actor_following (id, actor_id, target_actor_id, state, target_actor_acct)
const query = db.qb.insertOrIgnore(`
INTO actor_following (id, actor_id, target_actor_id, state, target_actor_acct)
VALUES (?, ?, ?, ?, ?)
`
`)
const out = await db
.prepare(query)