create one { id: 'generated-cuid', name: 'fuma' } create other users [ { _id: 'alfon' }, { _id: 'test' } ] initial data ready [ { id: 'alfon', name: 'alfon' }, { id: 'generated-cuid', name: 'fuma' }, { id: 'test', name: 'Test User' } ] [ { content: 'Hello World 1 by alfon', id: '1', image: null, mentionId: null, parent: null, user: 'alfon' }, { content: 'Hello World 2 by alfon', id: '2', image: null, mentionId: '1', parent: null, user: 'alfon' } ] test joins: user -> messages -> mentioned by [ { id: 'alfon', messages: [ { content: 'Hello World 1 by alfon', id: '1', image: null, mentionId: null, mentionedBy: { author: { id: 'alfon', name: 'alfon' }, content: 'Hello World 2 by alfon', id: '2', image: null, mentionId: '1', parent: null, user: 'alfon' }, parent: null, user: 'alfon' }, { content: 'Hello World 2 by alfon', id: '2', image: null, mentionId: '1', mentionedBy: null, parent: null, user: 'alfon' } ], name: 'alfon' }, { id: 'generated-cuid', messages: [], name: 'fuma' }, { id: 'test', messages: [], name: 'Test User' } ] test joins: user -> messages (conditional) -> author [ { id: 'alfon', messages: [ { author: { id: 'alfon', name: 'alfon' }, content: 'Hello World 1 by alfon' } ], name: 'alfon' }, { id: 'generated-cuid', messages: [], name: 'fuma' }, { id: 'test', messages: [], name: 'Test User' } ] count users: 3 upsert bob: should be created as sad { id: 'bob', name: 'Bob is sad' } upsert bob: should be updated to happy { id: 'bob', name: 'Bob is happy' } insert with binary data { content: 'test', id: 'image-test', image: Uint8Array(8) [ 1, 2, 3, 4, 5, 6, 7, 8 ], mentionId: null, parent: null, user: 'alfon' } should be able to select affected records in transaction [ { content: 'Hello World 1 by alfon', id: '1', image: null, mentionId: null, parent: null, user: 'alfon' }, { content: 'Hello World 2 by alfon', id: '2', image: null, mentionId: '1', parent: null, user: 'alfon' }, { content: 'test message', id: 'transaction-1', image: null, mentionId: null, parent: null, user: 'alfon' }, { content: 'haha', id: 'transaction-2', image: null, mentionId: null, parent: null, user: 'bob' } ] after rollback, the changes should not be kept [ { content: 'Hello World 1 by alfon', id: '1', image: null, mentionId: null, parent: null, user: 'alfon' }, { content: 'Hello World 2 by alfon', id: '2', image: null, mentionId: '1', parent: null, user: 'alfon' }, { content: 'test', id: 'image-test', image: Uint8Array(8) [ 1, 2, 3, 4, 5, 6, 7, 8 ], mentionId: null, parent: null, user: 'alfon' } ]