kopia lustrzana https://github.com/cloudflare/wildebeest
query builder insertOrIgnore
rodzic
efdf8eed0e
commit
1b830d8df2
|
@ -9,10 +9,9 @@ export async function getPeers(db: Database): Promise<Array<String>> {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function addPeer(db: Database, domain: string): Promise<void> {
|
export async function addPeer(db: Database, domain: string): Promise<void> {
|
||||||
const query = `
|
const query = db.qb.insertOrIgnore(`
|
||||||
INSERT OR IGNORE INTO peers (domain)
|
INTO peers (domain) VALUES (?)
|
||||||
VALUES (?)
|
`)
|
||||||
`
|
|
||||||
|
|
||||||
const out = await db.prepare(query).bind(domain).run()
|
const out = await db.prepare(query).bind(domain).run()
|
||||||
if (!out.success) {
|
if (!out.success) {
|
||||||
|
|
|
@ -17,6 +17,10 @@ const qb: QueryBuilder = {
|
||||||
epoch(): string {
|
epoch(): string {
|
||||||
return '00-00-00 00:00:00'
|
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 {
|
export default function make({ DATABASE }: Pick<Env, 'DATABASE'>): Database {
|
||||||
|
|
|
@ -29,6 +29,7 @@ export interface QueryBuilder {
|
||||||
jsonExtractIsNull(obj: string, prop: string): string
|
jsonExtractIsNull(obj: string, prop: string): string
|
||||||
set(array: string): string
|
set(array: string): string
|
||||||
epoch(): string
|
epoch(): string
|
||||||
|
insertOrIgnore(q: string): string
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getDatabase(env: Pick<Env, 'DATABASE'>): Promise<Database> {
|
export async function getDatabase(env: Pick<Env, 'DATABASE'>): Promise<Database> {
|
||||||
|
|
|
@ -10,11 +10,12 @@ const STATE_ACCEPTED = 'accepted'
|
||||||
// During a migration we move the followers from the old Actor to the new
|
// 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> {
|
export async function moveFollowers(db: Database, actor: Actor, followers: Array<string>): Promise<void> {
|
||||||
const batch = []
|
const batch = []
|
||||||
const stmt = db.prepare(`
|
const stmt = db.prepare(
|
||||||
INSERT OR IGNORE
|
db.qb.insertOrIgnore(`
|
||||||
INTO actor_following (id, actor_id, target_actor_id, target_actor_acct, state)
|
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 actorId = actor.id.toString()
|
||||||
const actorAcc = urlToHandle(actor.id)
|
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> {
|
export async function moveFollowing(db: Database, actor: Actor, followingActors: Array<string>): Promise<void> {
|
||||||
const batch = []
|
const batch = []
|
||||||
const stmt = db.prepare(`
|
const stmt = db.prepare(
|
||||||
INSERT OR IGNORE
|
db.qb.insertOrIgnore(`
|
||||||
INTO actor_following (id, actor_id, target_actor_id, target_actor_acct, state)
|
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 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> {
|
export async function addFollowing(db: Database, actor: Actor, target: Actor, targetAcct: string): Promise<string> {
|
||||||
const id = crypto.randomUUID()
|
const id = crypto.randomUUID()
|
||||||
|
|
||||||
const query = `
|
const query = db.qb.insertOrIgnore(`
|
||||||
INSERT OR IGNORE INTO actor_following (id, actor_id, target_actor_id, state, target_actor_acct)
|
INTO actor_following (id, actor_id, target_actor_id, state, target_actor_acct)
|
||||||
VALUES (?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?)
|
||||||
`
|
`)
|
||||||
|
|
||||||
const out = await db
|
const out = await db
|
||||||
.prepare(query)
|
.prepare(query)
|
||||||
|
|
Ładowanie…
Reference in New Issue