| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { database } from 'src/watermelondb';
- import BlockedUser from 'src/watermelondb/models/BlockedUser';
- type Blocked = {
- id: number;
- first_name: string;
- last_name: string;
- avatar: string | null;
- };
- export async function upsertBlockedUsers(users: Blocked[]) {
- if (!users?.length) return;
- const collection = database.get<BlockedUser>('blocked_users');
- const existingBlocked = await collection.query().fetch();
- await database.write(async () => {
- const batch: any[] = [];
- for (const u of users) {
- const existing = existingBlocked.find((ec) => ec.userId && ec.userId === u.id);
- if (existing) {
- batch.push(
- existing.prepareUpdate((rec) => {
- rec.firstName = u.first_name;
- rec.lastName = u.last_name;
- rec.avatar = u.avatar ?? null;
- rec.removed = false;
- })
- );
- } else {
- batch.push(
- collection.prepareCreate((rec) => {
- rec.userId = u.id;
- rec.firstName = u.first_name;
- rec.lastName = u.last_name;
- rec.avatar = u.avatar ?? null;
- rec.removed = false;
- })
- );
- }
- }
- await database.batch(batch);
- });
- }
|