How to use the @nozbe/watermelondb.Q.where function in @nozbe/watermelondb

To help you get started, we’ve selected a few @nozbe/watermelondb examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github RocketChat / Rocket.Chat.ReactNative / app / lib / methods / updateMessages.js View on Github external
return db.action(async() => {
			const subCollection = db.collections.get('subscriptions');
			let sub;
			try {
				sub = await subCollection.find(rid);
			} catch (error) {
				sub = { id: rid };
				console.log('updateMessages: subscription not found');
			}

			const messagesIds = [...update.map(m => m._id), ...remove.map(m => m._id)];
			const msgCollection = db.collections.get('messages');
			const threadCollection = db.collections.get('threads');
			const threadMessagesCollection = db.collections.get('thread_messages');
			const allMessagesRecords = await msgCollection
				.query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds)))
				.fetch();
			const allThreadsRecords = await threadCollection
				.query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds)))
				.fetch();
			const allThreadMessagesRecords = await threadMessagesCollection
				.query(Q.where('subscription_id', rid), Q.where('id', Q.oneOf(messagesIds)))
				.fetch();

			update = update.map(m => buildMessage(m));

			// filter messages
			let msgsToCreate = update.filter(i1 => !allMessagesRecords.find(i2 => i1._id === i2.id));
			let msgsToUpdate = allMessagesRecords.filter(i1 => update.find(i2 => i1.id === i2._id));

			// filter threads
			const allThreads = update.filter(m => m.tlm);
github RocketChat / Rocket.Chat.ReactNative / app / lib / methods / updateMessages.js View on Github external
sub = { id: rid };
				console.log('updateMessages: subscription not found');
			}

			const messagesIds = [...update.map(m => m._id), ...remove.map(m => m._id)];
			const msgCollection = db.collections.get('messages');
			const threadCollection = db.collections.get('threads');
			const threadMessagesCollection = db.collections.get('thread_messages');
			const allMessagesRecords = await msgCollection
				.query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds)))
				.fetch();
			const allThreadsRecords = await threadCollection
				.query(Q.where('rid', rid), Q.where('id', Q.oneOf(messagesIds)))
				.fetch();
			const allThreadMessagesRecords = await threadMessagesCollection
				.query(Q.where('subscription_id', rid), Q.where('id', Q.oneOf(messagesIds)))
				.fetch();

			update = update.map(m => buildMessage(m));

			// filter messages
			let msgsToCreate = update.filter(i1 => !allMessagesRecords.find(i2 => i1._id === i2.id));
			let msgsToUpdate = allMessagesRecords.filter(i1 => update.find(i2 => i1.id === i2._id));

			// filter threads
			const allThreads = update.filter(m => m.tlm);
			let threadsToCreate = allThreads.filter(i1 => !allThreadsRecords.find(i2 => i1._id === i2.id));
			let threadsToUpdate = allThreadsRecords.filter(i1 => allThreads.find(i2 => i1.id === i2._id));

			// filter thread messages
			const allThreadMessages = update.filter(m => m.tmid);
			let threadMessagesToCreate = allThreadMessages.filter(i1 => !allThreadMessagesRecords.find(i2 => i1._id === i2.id));
github RocketChat / Rocket.Chat.ReactNative / app / views / SelectedUsersView.js View on Github external
init = async() => {
		try {
			const db = database.active;
			const observable = await db.collections
				.get('subscriptions')
				.query(Q.where('t', 'd'))
				.observeWithColumns(['room_updated_at']);

			this.querySubscription = observable.subscribe((data) => {
				const chats = orderBy(data, ['roomUpdatedAt'], ['desc']);
				this.setState({ chats });
			});
		} catch (e) {
			log(e);
		}
	}
github status-im / liquid-funding / src / components / projects / Projects.jsx View on Github external
export default withDatabase(withObservables([], ({database}) => ({
  projectAddedEvents: database.collections.get('lp_events').query(
    Q.where('event', 'ProjectAdded')
  ).observe()
}))(StyledProject))
github status-im / liquid-funding / src / components / dashboard / FundingSummary.jsx View on Github external
export default withDatabase(withObservables([], ({ database }) => ({
  transfers: database.collections.get('lp_events').query(
    Q.where('event', 'Transfer')
  ).observe(),
  vaultEvents : database.collections.get('vault_events').query().observe()
}))(styledCard))
github status-im / liquid-funding / src / actions / vaultEvents.js View on Github external
export const getVaultEventById = async id => {
  const event = await vaultCollection.query(
    Q.where('event_id', id)
  ).fetch()
  return event
}
github RocketChat / Rocket.Chat.ReactNative / app / views / RoomMembersView / index.js View on Github external
onPressUser = async(item) => {
		try {
			const db = database.active;
			const subsCollection = db.collections.get('subscriptions');
			const query = await subsCollection.query(Q.where('name', item.username)).fetch();
			if (query) {
				const [room] = query;
				this.goRoom({ rid: room.rid, name: item.username, room });
			} else {
				const result = await RocketChat.createDirectMessage(item.username);
				if (result.success) {
					this.goRoom({ rid: result.room._id, name: item.username });
				}
			}
		} catch (e) {
			log(e);
		}
	}
github status-im / liquid-funding / src / model / pledge.js View on Github external
@action async transferTo(to, amount, projectId) {
    const toPledgeQuery = await this.collections.get('pledges').query(
      Q.where('pledge_id', to)
    ).fetch()
    const pledgesCollection = await this.collections.get('pledges')
    const toPledge = toPledgeQuery[0]
    const args = [
      this.prepareUpdate(pledge => {
        pledge.amount = (BigInt(pledge.amount) - BigInt(amount)).toString()
      })
    ]
    if (toPledge) {
      args.push(
        toPledge.prepareUpdate(pledge => {
          pledge.amount = (BigInt(pledge.amount) + BigInt(amount)).toString()
        })
      )
    } else {
      args.push(
github status-im / liquid-funding / src / actions / lpEvents.js View on Github external
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
}