68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
import { Q } from '@nozbe/watermelondb'
|
|
import database from '../db'
|
|
import { getAllLPEvents, GIVER_ADDED, DELEGATE_ADDED, PROJECT_ADDED } from '../utils/events'
|
|
|
|
const lpCollection = database.collections.get('lp_events')
|
|
export const addEvent = async data => {
|
|
await database.action(async () => {
|
|
const res = await lpCollection.create(lpEvent => {
|
|
const { event, address, id, blockNumber } = data
|
|
lpEvent.eventId = id
|
|
lpEvent.address = address
|
|
lpEvent.event = event
|
|
lpEvent.blockNumber = blockNumber
|
|
})
|
|
return res
|
|
})
|
|
}
|
|
|
|
export const batchAddEvents = async events => {
|
|
const batch = events.map(e => {
|
|
return lpCollection.prepareCreate(lpEvent => {
|
|
const { event, address, id, blockNumber, returnValues } = e
|
|
lpEvent.eventId = id
|
|
lpEvent.address = address
|
|
lpEvent.event = event
|
|
lpEvent.blockNumber = blockNumber
|
|
lpEvent.returnValues = returnValues
|
|
})
|
|
})
|
|
return await database.action(async () => await database.batch(...batch))
|
|
}
|
|
|
|
export const getLatestProfileEvents = async eventIds => {
|
|
const events = await lpCollection.query(
|
|
Q.where(
|
|
'id',
|
|
Q.notIn(eventIds)
|
|
),
|
|
Q.where(
|
|
'event',
|
|
Q.oneOf([GIVER_ADDED, DELEGATE_ADDED, PROJECT_ADDED])
|
|
)
|
|
).fetch()
|
|
return events
|
|
}
|
|
|
|
|
|
export const getLpEventById = async id => {
|
|
const event = await lpCollection.query(
|
|
Q.where('event_id', id)
|
|
).fetch()
|
|
return event
|
|
}
|
|
|
|
export const getLastBlockStored = async () => {
|
|
const col = await lpCollection.query().fetch()
|
|
const blockNumber = col.length
|
|
? col.sort((a,b) => b.blockNumber - a.blockNumber)[0].blockNumber
|
|
: 0
|
|
return blockNumber
|
|
}
|
|
|
|
export const getAndAddLpEvents = async () => {
|
|
const lastBlock = await getLastBlockStored()
|
|
const events = await getAllLPEvents(lastBlock + 1)
|
|
batchAddEvents(events)
|
|
}
|