From 8be592d9257d79b072db0cb6b8ddb0f1c8366f49 Mon Sep 17 00:00:00 2001 From: Amine Date: Wed, 19 Nov 2025 15:05:13 +0800 Subject: [PATCH 01/14] docs(WIP): revamped the attachment documentation --- usage/use-case-examples/attachments-files.mdx | 676 +++++++++++++++++- 1 file changed, 662 insertions(+), 14 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 25e40a0..5c7e4f2 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -1,24 +1,672 @@ --- title: "Attachments / Files" -description: Syncing large attachments/files directly using PowerSync is not recommended. +description: Keep files out of your database and handle attachments in an entirely storage-agnostic way. PowerSync syncs minimal metadata while an offline-first queue automatically handles uploads, downloads, and retries. mode: wide --- -Smaller files can be stored as base64-encoded data, but syncing many larger files using database rows may cause performance degradation. +## Introduction -On the other hand, PowerSync works well for syncing the attachment metadata, which could include the file path, name, size, and type. The client may then download the file from the storage provider, such as Supabase Storage or AWS S3. +While PowerSync excels at syncing structured data, storing large files (images, videos, PDFs) directly in SQLite is not recommended. Embedding files as base64-encoded data or binary blobs in database rows can lead to many issues. -### Helper Packages +Instead, PowerSync uses a **metadata + storage provider pattern**: sync small metadata records through PowerSync while storing actual files in purpose-built storage systems (S3, Supabase Storage, Cloudflare R2, etc.). This approach provides: -We currently have these helper packages available to manage attachments: +- **Optimal performance** - Database stays small and fast +- **Automatic queue management** - Background uploads/downloads with retry logic +- **Offline-first support** - Local files available immediately, sync happens in background +- **Cache management** - Automatic cleanup of unused files +- **Platform flexibility** - Works across web, mobile, and desktop -| SDK | Attachments Helper Package | Example Implementation | -| ----------------------------- | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| **React Native / JavaScript** | [powersync/attachments](https://www.npmjs.com/package/@powersync/attachments) | [To-Do List demo app](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist) | -| **Flutter** | [powersync\_attachments\_helper](https://pub.dev/packages/powersync_attachments_helper) (legacy) and [`powersync_core` attachments](https://pub.dev/documentation/powersync_core/latest/topics/attachments-topic.html) | [To-Do List demo app](https://github.com/powersync-ja/powersync.dart/tree/main/demos/supabase-todolist) | -| **Kotlin** | [attachments](https://github.com/powersync-ja/powersync-kotlin/tree/main/core/src/commonMain/kotlin/com/powersync/attachments) | [To-Do List demo app](https://github.com/powersync-ja/powersync-kotlin/tree/main/demos/android-supabase-todolist) | -| **Swift** | [attachments](https://github.com/powersync-ja/powersync-swift/blob/main/Sources/PowerSync/attachments/README.md) | [To-Do List demo app](https://github.com/powersync-ja/powersync-swift/tree/main/Demo) | +## How It Works -The example implementations above use [Supabase Storage](https://supabase.com/docs/guides/storage) as storage provider. -* For more information on the use of Supabase as the storage provider, refer to [Handling Attachments](/integration-guides/supabase-+-powersync/handling-attachments) -* To learn how to adapt the implementations to use AWS S3 as the storage provider, see [this tutorial](/tutorials/client/attachments-and-files/aws-s3-storage-adapter) +PowerSync attachments follow this architecture: + +// WIP + +### Workflow + +1. **Save file** - Your app calls `saveFile()` with file data and an `updateHook` to handle linking the attachment to your data model +2. **Queue for upload** - File is saved locally and a record is created in the attachments table with state `QUEUED_UPLOAD` +3. **Background upload** - The attachment queue automatically uploads file to remote storage (S3/Supabase/etc.) +4. **Remote storage** - File is stored in remote storage with the attachment ID +5. **State update** - The `updateHook` runs, updating your data model with the attachment ID and marking the file locally as `SYNCED` +6. **Cross-device sync** - PowerSync syncs the data model changes to other clients +7. **Data model updated** - Other clients receive the updated data model with the new attachment reference (e.g., `user.photo_id = "id-123"`) +8. **Watch detects attachment** - Other clients' `watchAttachments()` callback detects the new attachment reference and creates a record in the attachments table with state `QUEUED_DOWNLOAD` +9. **File download** - The attachment queue automatically downloads the file from remote storage +10. **Local storage** - File is saved to local storage on the other client +11. **State update** - File is marked locally as `SYNCED` and ready for use + +### Attachment States + +| State | Description | +|-------|-------------| +| `QUEUED_UPLOAD` | File saved locally, waiting to upload to remote storage | +| `QUEUED_DOWNLOAD` | Data model synced from another device, file needs to be downloaded | +| `SYNCED` | File exists both locally and in remote storage, fully synchronized | +| `QUEUED_DELETE` | Marked for deletion from both local and remote storage | +| `ARCHIVED` | No longer referenced in your data model, candidate for cleanup | + +## Core Components + +### Attachment Table + +The **Attachment Table** is a local-only table that stores metadata about each file. It's not synced through PowerSync's sync rules - instead, it's managed entirely by the attachment queue on each device. + +**Metadata stored:** +- `id` - Unique attachment identifier (UUID) +- `filename` - File name with extension (e.g., `photo-123.jpg`) +- `localUri` - Path to file in local storage +- `size` - File size in bytes +- `mediaType` - MIME type (e.g., `image/jpeg`) +- `state` - Current sync state (see states above) +- `hasSynced` - Boolean indicating if file has ever been uploaded +- `timestamp` - Last update time +- `metaData` - Optional JSON string for custom data + +**Key characteristics:** +- **Local-only** - Each device maintains its own attachment table +- **Automatic management** - Queue handles all inserts/updates +- **Cross-client coordination** - Your data model (e.g., `users.photo_id`) tells each client which files it needs + +### Remote Storage Adapter + +The **Remote Storage Adapter** is an interface you implement to connect PowerSync with your cloud storage provider. It's completely platform-agnostic - use S3, Supabase Storage, Cloudflare R2, Azure Blob, or even IPFS. + +**Interface methods:** +- `uploadFile(fileData, attachment)` - Upload file to cloud storage +- `downloadFile(attachment)` - Download file from cloud storage +- `deleteFile(attachment)` - Delete file from cloud storage + +**Common pattern:** +For security reasons client side implementations should use **signed URLs** +1. Request a signed upload/download URL from your backend +2. Your backend validates permissions and generates a temporary URL +3. Client uploads/downloads directly to storage using the signed URL +4. Never expose storage credentials to clients + +### Local Storage Adapter + +The **Local Storage Adapter** handles file persistence on the device. PowerSync provides implementations for common platforms and allows you to create custom adapters. + +**Interface methods:** +- `initialize()` - Set up storage (create directories, etc.) +- `saveFile(path, data)` - Write file to storage +- `readFile(path)` - Read file from storage +- `deleteFile(path)` - Remove file from storage +- `fileExists(path)` - Check if file exists +- `getLocalUri(filename)` - Get full path for a filename + +**Built-in adapters:** +- **IndexedDB** - For web browsers (`IndexDBFileSystemStorageAdapter`) +- **Node.js Filesystem** - For Node/Electron (`NodeFileSystemAdapter`) +- **Expo FileSystem** - For React Native with Expo +- **Native mobile storage** - For Flutter, Kotlin, Swift + +### Attachment Queue + +The **Attachment Queue** is the orchestrator that manages the entire attachment lifecycle. It: + +- **Watches your data model** - You provide a `watchAttachments` callback that monitors which files your app references +- **Manages state transitions** - Automatically moves files through states (upload/download → synced → archive → delete) +- **Handles retries** - Failed operations are retried on the next sync interval +- **Performs cleanup** - Removes archived files that are no longer needed +- **Verifies integrity** - Checks local files exist and repairs inconsistencies + +**Watched Attachments pattern:** +The queue needs to know which attachments exist in your data model. For example, if users have profile photos, the following query can be used by the queue to operate on these attachments: + +```sql +SELECT photo_id FROM users WHERE photo_id IS NOT NULL +``` + +The queue compares this list with its internal attachment table to determine: +- **New attachments** - Download them +- **Missing attachments** - Upload them +- **Removed attachments** - Archive them + +## Implementation Guide + +### Installation + + + +```bash JavaScript/TypeScript +npm install @powersync/attachments +# or +yarn add @powersync/attachments +# or +pnpm add @powersync/attachments +``` + +```bash Flutter +comes with flutter SDK, check SDK installation guide +``` + +```swift Swift +comes with swift SDK, check SDK installation guide +``` + +```kotlin Kotlin +comes with Kotlin SDK, check SDK installation guide +``` + + + +### Setup: Add Attachment Table to Schema + + + +```typescript JavaScript/TypeScript +import { Schema, Table, column } from '@powersync/web'; +import { AttachmentTable } from '@powersync/attachments'; + +const appSchema = new Schema({ + users: new Table({ + name: column.text, + email: column.text, + photo_id: column.text // References attachment ID + }), + // Add the attachment table + attachments: new AttachmentTable() +}); +``` + +```dart Flutter +final schema = Schema([ + Table('users', [ + Column.text('name'), + Column.text('email'), + Column.text('photo_id') + ]), + AttachmentsQueueTable(), +]); +``` + +```swift Swift +let users = Table( + name: "users", + columns: [ + Column.text("name"), + Column.integer("email"), + Column.text("photo_id"), + ] +) + +let schema = Schema( + tables: [ + users, + // Add the local-only table which stores attachment states + createAttachmentTable(name: "attachments") + ] +) +``` + +```kotlin Kotlin +import com.powersync.attachments.createAttachmentsTable +import com.powersync.db.schema.Column +import com.powersync.db.schema.Schema +import com.powersync.db.schema.Table + +val users = Table( + name = "users", + columns = listOf( + Column.text("name"), + Column.text("email"), + Column.text("photo_id") + ) +) + +val schema = Schema( + users, + // Add the local-only table which stores attachment states + createAttachmentsTable("attachments") +) +``` + + + +### Configure Storage Adapters + + + +```typescript JavaScript/TypeScript +import { + IndexDBFileSystemStorageAdapter, + NodeFileSystemAdapter +} from '@powersync/attachments'; + +// For web browsers (IndexedDB) +const localStorage = new IndexDBFileSystemStorageAdapter('my-app-files'); + +// For Node.js/Electron (filesystem) +// const localStorage = new NodeFileSystemAdapter('./user-attachments'); + +// Remote storage adapter (example with signed URLs) +const remoteStorage = { + async uploadFile(fileData: ArrayBuffer, attachment: AttachmentRecord) { + // Request signed upload URL from your backend + const { uploadUrl } = await fetch('/api/attachments/upload-url', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + filename: attachment.filename, + contentType: attachment.mediaType + }) + }).then(r => r.json()); + + // Upload to cloud storage using signed URL + await fetch(uploadUrl, { + method: 'PUT', + body: fileData, + headers: { + 'Content-Type': attachment.mediaType || 'application/octet-stream' + } + }); + }, + + async downloadFile(attachment: AttachmentRecord): Promise { + // Request signed download URL from your backend + const { downloadUrl } = await fetch( + `/api/attachments/${attachment.id}/download-url` + ).then(r => r.json()); + + // Download from cloud storage + const response = await fetch(downloadUrl); + return response.arrayBuffer(); + }, + + async deleteFile(attachment: AttachmentRecord) { + // Delete via your backend + await fetch(`/api/attachments/${attachment.id}`, { + method: 'DELETE' + }); + } +}; +``` + +```dart Flutter +// Flutter TODO +``` + +```kotlin Kotlin +// Kotlin TODO +``` + +```swift Swift +// Swift TODO +``` + + + + +**Security Best Practice:** Always use your backend to generate signed URLs and validate permissions. Never expose storage credentials directly to clients. + + +### Initialize Attachment Queue + + + +```typescript JavaScript/TypeScript +import { AttachmentQueue } from '@powersync/attachments'; + +const attachmentQueue = new AttachmentQueue({ + db: db, // PowerSync database instance + localStorage, + remoteStorage, + + // Define which attachments exist in your data model + watchAttachments: (onUpdate) => { + db.watch( + `SELECT photo_id FROM users WHERE photo_id IS NOT NULL`, + [], + { + onResult: async (result) => { + const attachments = result.rows?._array.map(row => ({ + id: row.photo_id, + fileExtension: 'jpg' // or use full filename + })) ?? []; + await onUpdate(attachments); + } + } + ); + }, + + // Optional configuration + syncIntervalMs: 30000, // Sync every 30 seconds + downloadAttachments: true, // Auto-download referenced files + archivedCacheLimit: 100 // Keep 100 archived files before cleanup +}); + +// Start the sync process +await attachmentQueue.startSync(); +``` + +```dart Flutter +// Flutter TODO +``` + +```kotlin Kotlin +// Kotlin TODO +``` + +```swift Swift +// Swift TODO +``` + + + + +The `watchAttachments` callback is crucial - it tells the queue which files your app needs based on your data model. The queue uses this to automatically download, upload, or archive files. + + +### Upload an Attachment + + + +```typescript JavaScript/TypeScript +async function uploadProfilePhoto(imageBlob: Blob, userId: string) { + const arrayBuffer = await imageBlob.arrayBuffer(); + + const attachment = await attachmentQueue.saveFile({ + data: arrayBuffer, + fileExtension: 'jpg', + mediaType: 'image/jpeg', + + // updateHook runs in same transaction, ensuring atomicity + updateHook: async (tx, attachment) => { + await tx.execute( + 'UPDATE users SET photo_id = ? WHERE id = ?', + [attachment.id, userId] + ); + } + }); + + return attachment; +} + +// The queue will: +// 1. Save file locally immediately +// 2. Create attachment record with state QUEUED_UPLOAD +// 3. Update user record in same transaction +// 4. Automatically upload file in background +// 5. Update state to SYNCED when complete +``` + +```dart Flutter +// Flutter TODO +``` + +```kotlin Kotlin +// Kotlin TODO +``` + +```swift Swift +// Swift TODO +``` + + + + +The `updateHook` parameter is the recommended way to link attachments to your data model. It runs in the same database transaction, ensuring data consistency. + + +### Download/Access an Attachment + + + +```typescript JavaScript/TypeScript +// Downloads happen automatically when watchAttachments references a file + +async function getProfilePhotoUri(userId: string): Promise { + const user = await db.get( + 'SELECT photo_id FROM users WHERE id = ?', + [userId] + ); + + if (!user?.photo_id) { + return null; + } + + const attachment = await db.get( + 'SELECT * FROM attachments WHERE id = ?', + [user.photo_id] + ); + + if (!attachment) { + return null; + } + + if (attachment.state === 'SYNCED' && attachment.local_uri) { + return attachment.local_uri; + } + + return null; +} + +// Example: Display image in React with watch query +function ProfilePhoto({ userId }: { userId: string }) { + const [photoUri, setPhotoUri] = useState(null); + + useEffect(() => { + const watch = db.watch( + `SELECT a.local_uri, a.state + FROM users u + LEFT JOIN attachments a ON a.id = u.photo_id + WHERE u.id = ?`, + [userId], + { + onResult: (result) => { + const row = result.rows?._array[0]; + if (row?.state === 'SYNCED' && row?.local_uri) { + setPhotoUri(row.local_uri); + } + } + } + ); + + return () => watch.close(); + }, [userId]); + + if (!photoUri) { + return
Loading photo...
; + } + + return Profile; +} +``` + +```dart Flutter +// Flutter TODO +``` + +```kotlin Kotlin +// Kotlin TODO +``` + +```swift Swift +// Swift TODO +``` + +
+ +### Delete an Attachment + + + +```typescript JavaScript/TypeScript +async function deleteProfilePhoto(userId: string, photoId: string) { + await attachmentQueue.deleteFile({ + id: photoId, + + // updateHook ensures atomic deletion + updateHook: async (tx, attachment) => { + await tx.execute( + 'UPDATE users SET photo_id = NULL WHERE id = ?', + [userId] + ); + } + }); + + console.log('Photo queued for deletion'); + // The queue will: + // 1. Delete from remote storage + // 2. Delete local file + // 3. Remove attachment record +} + +// Alternative: Remove reference and let queue archive it automatically +async function removePhotoReference(userId: string) { + await db.execute( + 'UPDATE users SET photo_id = NULL WHERE id = ?', + [userId] + ); + + // The watchAttachments callback will detect this change + // The queue will automatically archive the unreferenced attachment + // After reaching archivedCacheLimit, it will be deleted +} +``` + +```dart Flutter +// Flutter TODO +``` + +```kotlin Kotlin +// Kotlin TODO +``` + +```swift Swift +// Swift TODO +``` + + + +## Advanced Topics + +### Error Handling + +Implement custom error handling to control retry behavior: + +```typescript +import { AttachmentErrorHandler } from '@powersync/attachments'; + +const errorHandler: AttachmentErrorHandler = { + async onDownloadError(attachment, error) { + console.error(`Download failed: ${attachment.filename}`, error); + + // Return true to retry, false to archive + if (error.message.includes('404')) { + return false; // File doesn't exist, don't retry + } + return true; // Retry on network errors + }, + + async onUploadError(attachment, error) { + console.error(`Upload failed: ${attachment.filename}`, error); + return true; // Always retry uploads + }, + + async onDeleteError(attachment, error) { + console.error(`Delete failed: ${attachment.filename}`, error); + return true; // Retry deletes + } +}; + +const queue = new AttachmentQueue({ + // ... other options + errorHandler +}); +``` + +### Custom Storage Adapters + +Create adapters for other storage systems: + +```typescript +import { LocalStorageAdapter, RemoteStorageAdapter } from '@powersync/attachments'; + +// Example: IPFS remote storage +class IPFSStorageAdapter implements RemoteStorageAdapter { + async uploadFile(fileData: ArrayBuffer, attachment: AttachmentRecord) { + // Upload to IPFS + const cid = await ipfs.add(fileData); + // Store CID in your backend for retrieval + await fetch('/api/ipfs-cids', { + method: 'POST', + body: JSON.stringify({ attachmentId: attachment.id, cid }) + }); + } + + async downloadFile(attachment: AttachmentRecord): Promise { + // Retrieve CID from backend + const { cid } = await fetch(`/api/ipfs-cids/${attachment.id}`) + .then(r => r.json()); + // Download from IPFS + return ipfs.cat(cid); + } + + async deleteFile(attachment: AttachmentRecord) { + // IPFS is immutable, but you can unpin and remove from backend + await fetch(`/api/ipfs-cids/${attachment.id}`, { method: 'DELETE' }); + } +} +``` + +### Verification and Recovery + +Verify attachment integrity and repair issues: + +```typescript +await attachmentQueue.verifyAttachments(); + +// This checks: +// - Local files exist at expected paths +// - Repairs broken localUri references +// - Archives attachments with missing files +// - Requeues downloads for synced files with missing local copies +``` + +### Cache Management + +Control archived file retention: + +```typescript +const queue = new AttachmentQueue({ + // ... other options + archivedCacheLimit: 200 // Keep 200 archived files; oldest deleted when limit reached +}); + +``` + +### Offline-First Considerations + +The attachment queue is designed for offline-first apps: + +- **Local-first operations** - Files are saved locally immediately, synced later +- **Automatic retry** - Failed uploads/downloads retry when connection returns +- **Queue persistence** - Queue state survives app restarts +- **Conflict-free** - Files are immutable, identified by UUID +- **Bandwidth efficient** - Only syncs when needed, respects network conditions + +## SDK & Demo Reference + +We provide attachment helpers for multiple platforms: + +| SDK | Package | Demo Application | +|-----|---------|------------------| +| **JavaScript/TypeScript** | [@powersync/attachments](https://www.npmjs.com/package/@powersync/attachments) | [React Native Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist) · [React Web Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-supabase-todolist) | +| **Flutter** | [Built-in](https://pub.dev/documentation/powersync_core/latest/topics/attachments-topic.html) | [Flutter Todo](https://github.com/powersync-ja/powersync.dart/tree/main/demos/supabase-todolist) | +| **Kotlin** | [Built-in attachments](https://github.com/powersync-ja/powersync-kotlin/tree/main/core/src/commonMain/kotlin/com/powersync/attachments) | [Android Todo](https://github.com/powersync-ja/powersync-kotlin/tree/main/demos/android-supabase-todolist) | +| **Swift** | [Built-in attachments](https://github.com/powersync-ja/powersync-swift/blob/main/Sources/PowerSync/attachments/README.md) | [iOS Demo](https://github.com/powersync-ja/powersync-swift/tree/main/Demo) | + + +Most demo applications use Supabase Storage as the storage provider, but the patterns are adaptable to any storage system. + + +## Related Resources + +- **[Supabase Storage Integration](/integration-guides/supabase-+-powersync/handling-attachments)** - Detailed guide for using Supabase Storage +- **[AWS S3 Storage Adapter Tutorial](/tutorials/client/attachments-and-files/aws-s3-storage-adapter)** - How to implement an S3 adapter +- **[JavaScript SDK Documentation](https://www.npmjs.com/package/@powersync/attachments)** - Complete API reference + +--- From 0e1d577bd5ea28f3401e63e59d28ab7280488385 Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 13:10:19 +0800 Subject: [PATCH 02/14] docs: Add attachment flow diagram and update imports for js attachments --- images/attachments/attachments-flow.png | Bin 0 -> 298902 bytes usage/use-case-examples/attachments-files.mdx | 52 +++++++++++------- 2 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 images/attachments/attachments-flow.png diff --git a/images/attachments/attachments-flow.png b/images/attachments/attachments-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1de3acd1b83eaacbb3a0a5b815ed96d77ad0da GIT binary patch literal 298902 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

${%WBRt9Zp0lOME?Y#ZZ#3fpj6&zqshN9{rV@ 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%0Dt*uM$>h!; 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 + PowerSync attachments flow & architecture + ### Workflow @@ -131,11 +131,7 @@ The queue compares this list with its internal attachment table to determine: ```bash JavaScript/TypeScript -npm install @powersync/attachments -# or -yarn add @powersync/attachments -# or -pnpm add @powersync/attachments +comes with web, node and react-native packages ``` ```bash Flutter @@ -157,8 +153,7 @@ comes with Kotlin SDK, check SDK installation guide ```typescript JavaScript/TypeScript -import { Schema, Table, column } from '@powersync/web'; -import { AttachmentTable } from '@powersync/attachments'; +import { Schema, Table, column, AttachmentTable } from '@powersync/web'; const appSchema = new Schema({ users: new Table({ @@ -230,17 +225,18 @@ val schema = Schema( ```typescript JavaScript/TypeScript -import { - IndexDBFileSystemStorageAdapter, - NodeFileSystemAdapter -} from '@powersync/attachments'; - // For web browsers (IndexedDB) +import { IndexDBFileSystemStorageAdapter } from '@powersync/web`; const localStorage = new IndexDBFileSystemStorageAdapter('my-app-files'); // For Node.js/Electron (filesystem) +// import { NodeFileSystemAdapter } from `@powersync/node`; // const localStorage = new NodeFileSystemAdapter('./user-attachments'); +// For React Native Expo (Expo file system) +// import { ExpoFileSystemAdapter } from `@powersync/node`; +// const localStorage = new ExpoFileSystemAdapter(); + // Remote storage adapter (example with signed URLs) const remoteStorage = { async uploadFile(fileData: ArrayBuffer, attachment: AttachmentRecord) { @@ -307,7 +303,7 @@ const remoteStorage = { ```typescript JavaScript/TypeScript -import { AttachmentQueue } from '@powersync/attachments'; +import { AttachmentQueue } from '@powersync/web'; const attachmentQueue = new AttachmentQueue({ db: db, // PowerSync database instance @@ -547,8 +543,10 @@ async function removePhotoReference(userId: string) { Implement custom error handling to control retry behavior: -```typescript -import { AttachmentErrorHandler } from '@powersync/attachments'; + + +```typescript JavaScript/TypeScript +import { AttachmentErrorHandler } from '@powersync/web'; const errorHandler: AttachmentErrorHandler = { async onDownloadError(attachment, error) { @@ -578,12 +576,22 @@ const queue = new AttachmentQueue({ }); ``` +```dart Flutter +``` + +```swift Swift +``` + +```kotlin Kotlin +``` + + ### Custom Storage Adapters Create adapters for other storage systems: ```typescript -import { LocalStorageAdapter, RemoteStorageAdapter } from '@powersync/attachments'; +import { LocalStorageAdapter, RemoteStorageAdapter } from '@powersync/web'; // Example: IPFS remote storage class IPFSStorageAdapter implements RemoteStorageAdapter { @@ -654,11 +662,13 @@ We provide attachment helpers for multiple platforms: | SDK | Package | Demo Application | |-----|---------|------------------| -| **JavaScript/TypeScript** | [@powersync/attachments](https://www.npmjs.com/package/@powersync/attachments) | [React Native Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist) · [React Web Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-supabase-todolist) | -| **Flutter** | [Built-in](https://pub.dev/documentation/powersync_core/latest/topics/attachments-topic.html) | [Flutter Todo](https://github.com/powersync-ja/powersync.dart/tree/main/demos/supabase-todolist) | +| **JavaScript/TypeScript** | [Built-in attachment](https://github.com/powersync-ja/powersync-js/tree/main/packages/common/src/attachments) | [React Native Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist) · [React Web Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-supabase-todolist) | +| **Flutter** | [Built-in attachment](https://pub.dev/documentation/powersync_core/latest/topics/attachments-topic.html) | [Flutter Todo](https://github.com/powersync-ja/powersync.dart/tree/main/demos/supabase-todolist) | | **Kotlin** | [Built-in attachments](https://github.com/powersync-ja/powersync-kotlin/tree/main/core/src/commonMain/kotlin/com/powersync/attachments) | [Android Todo](https://github.com/powersync-ja/powersync-kotlin/tree/main/demos/android-supabase-todolist) | | **Swift** | [Built-in attachments](https://github.com/powersync-ja/powersync-swift/blob/main/Sources/PowerSync/attachments/README.md) | [iOS Demo](https://github.com/powersync-ja/powersync-swift/tree/main/Demo) | +// TODO add deprecation note about js and dart old packages + Most demo applications use Supabase Storage as the storage provider, but the patterns are adaptable to any storage system. From 1ddbd42bce3b7a1297122f7141068ad5ed88a494 Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 15:02:15 +0800 Subject: [PATCH 03/14] docs: added Kotlin code examples --- usage/use-case-examples/attachments-files.mdx | 377 ++++++++++++++++-- 1 file changed, 352 insertions(+), 25 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 5ed83ef..a64c4a6 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -207,7 +207,7 @@ val users = Table( columns = listOf( Column.text("name"), Column.text("email"), - Column.text("photo_id") + Column.text("photo_id") // References attachment ID ) ) @@ -284,14 +284,59 @@ const remoteStorage = { // Flutter TODO ``` -```kotlin Kotlin -// Kotlin TODO -``` - ```swift Swift // Swift TODO ``` +```kotlin Kotlin +import com.powersync.attachments.LocalStorage +import com.powersync.attachments.RemoteStorage +import com.powersync.attachments.Attachment +import com.powersync.attachments.storage.IOLocalStorageAdapter +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flowOf +import kotlinx.io.files.Path + +// For local storage (uses IOLocalStorageAdapter by default) +// On Android: "${applicationContext.filesDir.canonicalPath}/attachments" +val attachmentsDirectory = Path("attachments").toString() +val localStorage: LocalStorage = IOLocalStorageAdapter() + +// Remote storage adapter (example with signed URLs) +val remoteStorage = object : RemoteStorage { + override suspend fun uploadFile( + fileData: Flow, + attachment: Attachment + ) { + // Request signed upload URL from your backend + val uploadUrl = // ... fetch from your API + + // Upload to cloud storage using signed URL + // Collect the flow and upload + val bytes = mutableListOf() + fileData.collect { bytes.add(it) } + val allBytes = bytes.flatMap { it.toList() }.toByteArray() + + // Upload allBytes to uploadUrl + // ... your HTTP upload implementation + } + + override suspend fun downloadFile(attachment: Attachment): Flow { + // Request signed download URL from your backend + val downloadUrl = // ... fetch from your API + + // Download from cloud storage + val response = // ... your HTTP download implementation + return flowOf(response) // or convert your ByteArray to Flow + } + + override suspend fun deleteFile(attachment: Attachment) { + // Delete via your backend + // ... your HTTP delete implementation + } +} +``` + @@ -341,14 +386,50 @@ await attachmentQueue.startSync(); // Flutter TODO ``` -```kotlin Kotlin -// Kotlin TODO -``` - ```swift Swift // Swift TODO ``` +```kotlin Kotlin +import com.powersync.attachments.AttachmentQueue +import com.powersync.attachments.WatchedAttachmentItem +import com.powersync.db.getString +import kotlinx.coroutines.flow.Flow +import kotlin.time.Duration.Companion.seconds + +val attachmentQueue = AttachmentQueue( + db = db, // PowerSync database instance + remoteStorage = remoteStorage, + attachmentsDirectory = attachmentsDirectory, + localStorage = localStorage, // Optional, defaults to IOLocalStorageAdapter() + + // Define which attachments exist in your data model + watchAttachments = { + db.watch( + sql = """ + SELECT photo_id + FROM users + WHERE photo_id IS NOT NULL + """, + parameters = null + ) { cursor -> + WatchedAttachmentItem( + id = cursor.getString("photo_id"), + fileExtension = "jpg" // or use full filename + ) + } + }, + + // Optional configuration + syncInterval = 30.seconds, // Sync every 30 seconds + downloadAttachments = true, // Auto-download referenced files + archivedCacheLimit = 100 // Keep 100 archived files before cleanup +) + +// Start the sync process +attachmentQueue.startSync() +``` + @@ -392,14 +473,39 @@ async function uploadProfilePhoto(imageBlob: Blob, userId: string) { // Flutter TODO ``` -```kotlin Kotlin -// Kotlin TODO -``` - ```swift Swift // Swift TODO ``` +```kotlin Kotlin +import kotlinx.coroutines.flow.flowOf + +suspend fun uploadProfilePhoto(imageBytes: ByteArray, userId: String) { + val attachment = attachmentQueue.saveFile( + data = flowOf(imageBytes), + mediaType = "image/jpeg", + fileExtension = "jpg", + + // updateHook runs in same transaction, ensuring atomicity + updateHook = { tx, attachment -> + tx.execute( + "UPDATE users SET photo_id = ? WHERE id = ?", + listOf(attachment.id, userId) + ) + } + ) + + return attachment +} + +// The queue will: +// 1. Save file locally immediately +// 2. Create attachment record with state QUEUED_UPLOAD +// 3. Update user record in same transaction +// 4. Automatically upload file in background +// 5. Update state to SYNCED when complete +``` + @@ -475,14 +581,71 @@ function ProfilePhoto({ userId }: { userId: string }) { // Flutter TODO ``` -```kotlin Kotlin -// Kotlin TODO -``` - ```swift Swift // Swift TODO ``` +```kotlin Kotlin +import com.powersync.attachments.AttachmentState +import com.powersync.db.getString +import com.powersync.db.getStringOptional +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map + +// Downloads happen automatically when watchAttachments references a file +suspend fun getProfilePhotoUri(userId: String): String? { + val user = db.get( + "SELECT photo_id FROM users WHERE id = ?", + listOf(userId) + ) { cursor -> + cursor.getStringOptional("photo_id") + } + + if (user == null) { + return null + } + + val attachment = db.get( + "SELECT * FROM attachments WHERE id = ?", + listOf(user) + ) { cursor -> + com.powersync.attachments.Attachment.fromCursor(cursor) + } + + if (attachment == null) { + return null + } + + if (attachment.state == AttachmentState.SYNCED && attachment.localUri != null) { + return attachment.localUri + } + + return null +} + +// Example: Watch attachment state in Compose/UI +fun watchProfilePhoto(userId: String): Flow { + return db.watch( + sql = """ + SELECT a.local_uri, a.state + FROM users u + LEFT JOIN attachments a ON a.id = u.photo_id + WHERE u.id = ? + """, + parameters = listOf(userId) + ) { cursor -> + val state = AttachmentState.fromLong(cursor.getLong("state")) + val localUri = cursor.getStringOptional("local_uri") + + if (state == AttachmentState.SYNCED && localUri != null) { + localUri + } else { + null + } + }.map { results -> results.firstOrNull() } +} +``` + ### Delete an Attachment @@ -527,14 +690,45 @@ async function removePhotoReference(userId: string) { // Flutter TODO ``` -```kotlin Kotlin -// Kotlin TODO -``` - ```swift Swift // Swift TODO ``` +```kotlin Kotlin +suspend fun deleteProfilePhoto(userId: String, photoId: String) { + attachmentQueue.deleteFile( + attachmentId = photoId, + + // updateHook ensures atomic deletion + updateHook = { tx, attachment -> + tx.execute( + "UPDATE users SET photo_id = NULL WHERE id = ?", + listOf(userId) + ) + } + ) + + // The queue will: + // 1. Delete from remote storage + // 2. Delete local file + // 3. Remove attachment record +} + +// Alternative: Remove reference and let queue archive it automatically +suspend fun removePhotoReference(userId: String) { + db.writeTransaction { tx -> + tx.execute( + "UPDATE users SET photo_id = NULL WHERE id = ?", + listOf(userId) + ) + } + + // The watchAttachments callback will detect this change + // The queue will automatically archive the unreferenced attachment + // After reaching archivedCacheLimit, it will be deleted +} +``` + ## Advanced Topics @@ -583,6 +777,43 @@ const queue = new AttachmentQueue({ ``` ```kotlin Kotlin +import com.powersync.attachments.SyncErrorHandler + +val errorHandler = object : SyncErrorHandler { + override suspend fun onDownloadError( + attachment: Attachment, + exception: Exception + ): Boolean { + println("Download failed: ${attachment.filename}", exception) + + // Return true to retry, false to archive + if (exception.message?.contains("404") == true) { + return false // File doesn't exist, don't retry + } + return true // Retry on network errors + } + + override suspend fun onUploadError( + attachment: Attachment, + exception: Exception + ): Boolean { + println("Upload failed: ${attachment.filename}", exception) + return true // Always retry uploads + } + + override suspend fun onDeleteError( + attachment: Attachment, + exception: Exception + ): Boolean { + println("Delete failed: ${attachment.filename}", exception) + return true // Retry deletes + } +} + +val queue = AttachmentQueue( + // ... other options + errorHandler = errorHandler +) ``` @@ -590,7 +821,9 @@ const queue = new AttachmentQueue({ Create adapters for other storage systems: -```typescript + + +```typescript JavaScript/TypeScript import { LocalStorageAdapter, RemoteStorageAdapter } from '@powersync/web'; // Example: IPFS remote storage @@ -620,11 +853,55 @@ class IPFSStorageAdapter implements RemoteStorageAdapter { } ``` +```dart Flutter +``` + +```swift Swift +``` + +```kotlin Kotlin +// Example: IPFS remote storage +class IPFSStorageAdapter : RemoteStorage { + override suspend fun uploadFile( + fileData: Flow, + attachment: Attachment + ) { + // Collect the flow + val bytes = mutableListOf() + fileData.collect { bytes.add(it) } + val allBytes = bytes.flatMap { it.toList() }.toByteArray() + + // Upload to IPFS + val cid = // ... upload to IPFS + + // Store CID in your backend for retrieval + // ... your HTTP POST to store CID + } + + override suspend fun downloadFile(attachment: Attachment): Flow { + // Retrieve CID from backend + val cid = // ... fetch CID from your API + + // Download from IPFS + val data = // ... download from IPFS + return flowOf(data) + } + + override suspend fun deleteFile(attachment: Attachment) { + // IPFS is immutable, but you can unpin and remove from backend + // ... your HTTP DELETE implementation + } +} +``` + + + ### Verification and Recovery -Verify attachment integrity and repair issues: +verifyAttachments is called internally during `startSync()`. If you need to manually verify, you can access the internal method or implement your own verification logic by checking attachment records and their local files -```typescript + +```typescript Javascript/Typescript await attachmentQueue.verifyAttachments(); // This checks: @@ -634,18 +911,68 @@ await attachmentQueue.verifyAttachments(); // - Requeues downloads for synced files with missing local copies ``` +```dart Flutter +``` + +```swift Swift +``` + +```kotlin Kotlin +// The verify attachment method is currently private in Kotlin SDK + +// Example: Manual verification +suspend fun verifyAttachments() { + attachmentQueue.attachmentsService.withContext { context -> + val attachments = context.getAttachments() + attachments.forEach { attachment -> + if (attachment.localUri != null) { + val exists = attachmentQueue.localStorage.fileExists(attachment.localUri) + if (!exists && attachment.state == AttachmentState.SYNCED) { + // Handle missing file + } + } + } + } +} +``` + + + ### Cache Management Control archived file retention: -```typescript + + +```typescript JavaScript/TypeScript const queue = new AttachmentQueue({ // ... other options archivedCacheLimit: 200 // Keep 200 archived files; oldest deleted when limit reached }); +// For manually expiring the cache +queue.expireCache() + ``` +```dart Flutter +``` + +```swift Swift +``` + +```kotlin Kotlin +val queue = AttachmentQueue( + // ... other options + archivedCacheLimit = 200 // Keep 200 archived files; oldest deleted when limit reached +) + +// For manually expiring the cache +queue.expireCache() +``` + + + ### Offline-First Considerations The attachment queue is designed for offline-first apps: From 7ac538fa3dae49f8c3e9292a46118f26efdc8aaa Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 16:15:41 +0800 Subject: [PATCH 04/14] docs: added Flutter code examples --- usage/use-case-examples/attachments-files.mdx | 337 +++++++++++++++++- 1 file changed, 331 insertions(+), 6 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index a64c4a6..87337e2 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -167,11 +167,14 @@ const appSchema = new Schema({ ``` ```dart Flutter +import 'package:powersync/powersync.dart'; +import 'package:powersync_core/attachments/attachments.dart'; + final schema = Schema([ Table('users', [ Column.text('name'), Column.text('email'), - Column.text('photo_id') + Column.text('photo_id'), // References attachment ID ]), AttachmentsQueueTable(), ]); @@ -281,7 +284,77 @@ const remoteStorage = { ``` ```dart Flutter -// Flutter TODO +import 'dart:io'; +import 'dart:typed_data'; +import 'package:path_provider/path_provider.dart'; +import 'package:powersync_core/attachments/attachments.dart'; +import 'package:powersync_core/attachments/io.dart'; +import 'package:http/http.dart' as http; + +// For Flutter (native platforms) +Future getLocalStorage() async { + final appDocDir = await getApplicationDocumentsDirectory(); + final attachmentsDir = Directory('${appDocDir.path}/attachments'); + return IOLocalStorage(attachmentsDir); +} + +// Remote storage adapter (example with signed URLs) +class SignedUrlStorageAdapter implements RemoteStorage { + @override + Future uploadFile( + Stream> fileData, + Attachment attachment, + ) async { + // Request signed upload URL from your backend + final response = await http.post( + Uri.parse('/api/attachments/upload-url'), + headers: {'Content-Type': 'application/json'}, + body: jsonEncode({ + 'filename': attachment.filename, + 'contentType': attachment.mediaType, + }), + ); + + final uploadUrl = jsonDecode(response.body)['uploadUrl'] as String; + + // Collect stream data + final bytes = []; + await for (final chunk in fileData) { + bytes.addAll(chunk); + } + + // Upload to cloud storage using signed URL + await http.put( + Uri.parse(uploadUrl), + body: Uint8List.fromList(bytes), + headers: { + 'Content-Type': attachment.mediaType ?? 'application/octet-stream', + }, + ); + } + + @override + Future>> downloadFile(Attachment attachment) async { + // Request signed download URL from your backend + final response = await http.get( + Uri.parse('/api/attachments/${attachment.id}/download-url'), + ); + + final downloadUrl = jsonDecode(response.body)['downloadUrl'] as String; + + // Download from cloud storage + final httpResponse = await http.get(Uri.parse(downloadUrl)); + return Stream.value(httpResponse.bodyBytes); + } + + @override + Future deleteFile(Attachment attachment) async { + // Delete via your backend + await http.delete( + Uri.parse('/api/attachments/${attachment.id}'), + ); + } +} ``` ```swift Swift @@ -383,7 +456,44 @@ await attachmentQueue.startSync(); ``` ```dart Flutter -// Flutter TODO +import 'package:logging/logging.dart'; +import 'package:powersync/powersync.dart'; +import 'package:powersync_core/attachments/attachments.dart'; + +final logger = Logger('AttachmentQueue'); +late AttachmentQueue attachmentQueue; + +Future initializeAttachmentQueue(PowerSyncDatabase db) async { + attachmentQueue = AttachmentQueue( + db: db, + remoteStorage: SignedUrlStorageAdapter(), + localStorage: await getLocalStorage(), + + // Define which attachments exist in your data model + watchAttachments: () => db.watch(''' + SELECT photo_id as id + FROM users + WHERE photo_id IS NOT NULL + ''').map( + (results) => [ + for (final row in results) + WatchedAttachmentItem( + id: row['id'] as String, + fileExtension: 'jpg', // or use full filename + ) + ], + ), + + // Optional configuration + syncInterval: const Duration(seconds: 30), // Sync every 30 seconds + downloadAttachments: true, // Auto-download referenced files + archivedCacheLimit: 100, // Keep 100 archived files before cleanup + logger: logger, + ); + + // Start the sync process + await attachmentQueue.startSync(); +} ``` ```swift Swift @@ -470,7 +580,39 @@ async function uploadProfilePhoto(imageBlob: Blob, userId: string) { ``` ```dart Flutter -// Flutter TODO +import 'dart:io'; +import 'dart:typed_data'; +import 'package:powersync_core/attachments/attachments.dart'; + +Future uploadProfilePhoto( + File imageFile, + String userId, +) async { + final imageBytes = await imageFile.readAsBytes(); + + final attachment = await attachmentQueue.saveFile( + data: Stream.value(imageBytes), + mediaType: 'image/jpeg', + fileExtension: 'jpg', + + // updateHook runs in same transaction, ensuring atomicity + updateHook: (context, attachment) async { + await context.execute( + 'UPDATE users SET photo_id = ? WHERE id = ?', + [attachment.id, userId], + ); + }, + ); + + return attachment; +} + +// The queue will: +// 1. Save file locally immediately +// 2. Create attachment record with state QUEUED_UPLOAD +// 3. Update user record in same transaction +// 4. Automatically upload file in background +// 5. Update state to SYNCED when complete ``` ```swift Swift @@ -578,7 +720,69 @@ function ProfilePhoto({ userId }: { userId: string }) { ``` ```dart Flutter -// Flutter TODO +import 'package:powersync/powersync.dart'; +import 'package:powersync_core/attachments/attachments.dart'; + +// Downloads happen automatically when watchAttachments references a file +Future getProfilePhotoUri( + PowerSyncDatabase db, + String userId, +) async { + final user = await db.get( + 'SELECT photo_id FROM users WHERE id = ?', + [userId], + ); + + if (user == null || user['photo_id'] == null) { + return null; + } + + final attachment = await db.get( + 'SELECT * FROM attachments_queue WHERE id = ?', + [user['photo_id']], + ); + + if (attachment == null) { + return null; + } + + final state = AttachmentState.fromInt(attachment['state'] as int); + final localUri = attachment['local_uri'] as String?; + + if (state == AttachmentState.synced && localUri != null) { + // Resolve full path from local storage + final appDocDir = await getApplicationDocumentsDirectory(); + return '${appDocDir.path}/attachments/$localUri'; + } + + return null; +} + +// Example: Display image in Flutter with StreamBuilder +StreamBuilder>>( + stream: db.watch(''' + SELECT a.local_uri, a.state + FROM users u + LEFT JOIN attachments_queue a ON a.id = u.photo_id + WHERE u.id = ? + ''').map((results) => results.toList()), + builder: (context, snapshot) { + if (!snapshot.hasData || snapshot.data!.isEmpty) { + return const CircularProgressIndicator(); + } + + final row = snapshot.data!.first; + final state = AttachmentState.fromInt(row['state'] as int); + final localUri = row['local_uri'] as String?; + + if (state == AttachmentState.synced && localUri != null) { + // Load and display image + return Image.file(File(localUri)); + } + + return const Text('Loading photo...'); + }, +) ``` ```swift Swift @@ -687,7 +891,43 @@ async function removePhotoReference(userId: string) { ``` ```dart Flutter -// Flutter TODO +Future deleteProfilePhoto( + String userId, + String photoId, +) async { + await attachmentQueue.deleteFile( + attachmentId: photoId, + + // updateHook ensures atomic deletion + updateHook: (context, attachment) async { + await context.execute( + 'UPDATE users SET photo_id = NULL WHERE id = ?', + [userId], + ); + }, + ); + + print('Photo queued for deletion'); + // The queue will: + // 1. Delete from remote storage + // 2. Delete local file + // 3. Remove attachment record +} + +// Alternative: Remove reference and let queue archive it automatically +Future removePhotoReference( + PowerSyncDatabase db, + String userId, +) async { + await db.execute( + 'UPDATE users SET photo_id = NULL WHERE id = ?', + [userId], + ); + + // The watchAttachments callback will detect this change + // The queue will automatically archive the unreferenced attachment + // After reaching archivedCacheLimit, it will be deleted +} ``` ```swift Swift @@ -771,6 +1011,37 @@ const queue = new AttachmentQueue({ ``` ```dart Flutter +import 'package:powersync_core/attachments/attachments.dart'; + +final errorHandler = AttachmentErrorHandler( + onDownloadError: (attachment, exception, stackTrace) async { + print('Download failed: ${attachment.filename}'); + print('Error: $exception'); + + // Return true to retry, false to archive + if (exception.toString().contains('404')) { + return false; // File doesn't exist, don't retry + } + return true; // Retry on network errors + }, + + onUploadError: (attachment, exception, stackTrace) async { + print('Upload failed: ${attachment.filename}'); + print('Error: $exception'); + return true; // Always retry uploads + }, + + onDeleteError: (attachment, exception, stackTrace) async { + print('Delete failed: ${attachment.filename}'); + print('Error: $exception'); + return true; // Retry deletes + }, +); + +final queue = AttachmentQueue( + // ... other options + errorHandler: errorHandler, +); ``` ```swift Swift @@ -854,6 +1125,53 @@ class IPFSStorageAdapter implements RemoteStorageAdapter { ``` ```dart Flutter +// Example: IPFS remote storage +class IPFSStorageAdapter implements RemoteStorage { + @override + Future uploadFile( + Stream> fileData, + Attachment attachment, + ) async { + // Collect the stream + final bytes = []; + await for (final chunk in fileData) { + bytes.addAll(chunk); + } + + // Upload to IPFS + final cid = await ipfs.add(Uint8List.fromList(bytes)); + + // Store CID in your backend for retrieval + await http.post( + Uri.parse('/api/ipfs-cids'), + body: jsonEncode({ + 'attachmentId': attachment.id, + 'cid': cid, + }), + ); + } + + @override + Future>> downloadFile(Attachment attachment) async { + // Retrieve CID from backend + final response = await http.get( + Uri.parse('/api/ipfs-cids/${attachment.id}'), + ); + final cid = jsonDecode(response.body)['cid'] as String; + + // Download from IPFS + final data = await ipfs.cat(cid); + return Stream.value(data); + } + + @override + Future deleteFile(Attachment attachment) async { + // IPFS is immutable, but you can unpin and remove from backend + await http.delete( + Uri.parse('/api/ipfs-cids/${attachment.id}'), + ); + } +} ``` ```swift Swift @@ -956,6 +1274,13 @@ queue.expireCache() ``` ```dart Flutter +final queue = AttachmentQueue( + // ... other options + archivedCacheLimit: 200, // Keep 200 archived files; oldest deleted when limit reached +); + +// For manually expiring the cache +await queue.expireCache(); ``` ```swift Swift From 89e69a23cae8645134d40909c6978695b7ac414c Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 16:25:12 +0800 Subject: [PATCH 05/14] docs: add Swift code examples --- usage/use-case-examples/attachments-files.mdx | 345 +++++++++++++++++- 1 file changed, 338 insertions(+), 7 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 87337e2..667cb8e 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -181,12 +181,14 @@ final schema = Schema([ ``` ```swift Swift +import PowerSync + let users = Table( name: "users", columns: [ Column.text("name"), - Column.integer("email"), - Column.text("photo_id"), + Column.text("email"), + Column.text("photo_id"), // References attachment ID ] ) @@ -358,7 +360,85 @@ class SignedUrlStorageAdapter implements RemoteStorage { ``` ```swift Swift -// Swift TODO +import Foundation +import PowerSync + +// For iOS/macOS (FileManager) +func getAttachmentsDirectoryPath() throws -> String { + guard let documentsURL = FileManager.default.urls( + for: .documentDirectory, + in: .userDomainMask + ).first else { + throw PowerSyncAttachmentError.attachmentError("Could not determine attachments directory path") + } + return documentsURL.appendingPathComponent("attachments").path +} + +let localStorage = FileManagerStorageAdapter() + +// Remote storage adapter (example with signed URLs) +class SignedUrlStorageAdapter: RemoteStorageAdapter { + func uploadFile(fileData: Data, attachment: Attachment) async throws { + // Request signed upload URL from your backend + struct UploadUrlResponse: Codable { + let uploadUrl: String + } + + let requestBody = [ + "filename": attachment.filename, + "contentType": attachment.mediaType ?? "application/octet-stream" + ] + + var request = URLRequest(url: URL(string: "/api/attachments/upload-url")!) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try JSONSerialization.data(withJSONObject: requestBody) + + let (data, _) = try await URLSession.shared.data(for: request) + let response = try JSONDecoder().decode(UploadUrlResponse.self, from: data) + + // Upload to cloud storage using signed URL + var uploadRequest = URLRequest(url: URL(string: response.uploadUrl)!) + uploadRequest.httpMethod = "PUT" + uploadRequest.setValue(attachment.mediaType ?? "application/octet-stream", forHTTPHeaderField: "Content-Type") + uploadRequest.httpBody = fileData + + let (_, uploadResponse) = try await URLSession.shared.data(for: uploadRequest) + guard let httpResponse = uploadResponse as? HTTPURLResponse, + (200...299).contains(httpResponse.statusCode) else { + throw PowerSyncAttachmentError.generalError("Upload failed") + } + } + + func downloadFile(attachment: Attachment) async throws -> Data { + // Request signed download URL from your backend + struct DownloadUrlResponse: Codable { + let downloadUrl: String + } + + let request = URLRequest(url: URL(string: "/api/attachments/\(attachment.id)/download-url")!) + let (data, _) = try await URLSession.shared.data(for: request) + let response = try JSONDecoder().decode(DownloadUrlResponse.self, from: data) + + // Download from cloud storage + let downloadRequest = URLRequest(url: URL(string: response.downloadUrl)!) + let (fileData, _) = try await URLSession.shared.data(for: downloadRequest) + return fileData + } + + func deleteFile(attachment: Attachment) async throws { + // Delete via your backend + var request = URLRequest(url: URL(string: "/api/attachments/\(attachment.id)")!) + request.httpMethod = "DELETE" + let (_, response) = try await URLSession.shared.data(for: request) + guard let httpResponse = response as? HTTPURLResponse, + (200...299).contains(httpResponse.statusCode) else { + throw PowerSyncAttachmentError.generalError("Delete failed") + } + } +} + +let remoteStorage = SignedUrlStorageAdapter() ``` ```kotlin Kotlin @@ -497,7 +577,37 @@ Future initializeAttachmentQueue(PowerSyncDatabase db) async { ``` ```swift Swift -// Swift TODO +let attachmentQueue = AttachmentQueue( + db: db, // PowerSync database instance + remoteStorage: remoteStorage, + attachmentsDirectory: try getAttachmentsDirectoryPath(), + + // Define which attachments exist in your data model + watchAttachments: { + try db.watch( + sql: """ + SELECT photo_id + FROM users + WHERE photo_id IS NOT NULL + """, + parameters: [], + mapper: { cursor in + try WatchedAttachmentItem( + id: cursor.getString(name: "photo_id"), + fileExtension: "jpg" // or use full filename + ) + } + ) + }, + + // Optional configuration + syncInterval: 30.0, // Sync every 30 seconds + downloadAttachments: true, // Auto-download referenced files + archivedCacheLimit: 100 // Keep 100 archived files before cleanup +) + +// Start the sync process +try await attachmentQueue.startSync() ``` ```kotlin Kotlin @@ -616,7 +726,30 @@ Future uploadProfilePhoto( ``` ```swift Swift -// Swift TODO +func uploadProfilePhoto(imageData: Data, userId: String) async throws -> Attachment { + let attachment = try await attachmentQueue.saveFile( + data: imageData, + mediaType: "image/jpeg", + fileExtension: "jpg", + + // updateHook runs in same transaction, ensuring atomicity + updateHook: { tx, attachment in + try tx.execute( + sql: "UPDATE users SET photo_id = ? WHERE id = ?", + parameters: [attachment.id, userId] + ) + } + ) + + return attachment +} + +// The queue will: +// 1. Save file locally immediately +// 2. Create attachment record with state QUEUED_UPLOAD +// 3. Update user record in same transaction +// 4. Automatically upload file in background +// 5. Update state to SYNCED when complete ``` ```kotlin Kotlin @@ -786,7 +919,81 @@ StreamBuilder>>( ``` ```swift Swift -// Swift TODO +// Downloads happen automatically when watchAttachments references a file +func getProfilePhotoUri(userId: String) async throws -> String? { + guard let user = try await db.getOptional( + sql: "SELECT photo_id FROM users WHERE id = ?", + parameters: [userId], + mapper: { cursor in + try cursor.getStringOptional(name: "photo_id") + } + ), let photoId = user else { + return nil + } + + guard let attachment = try await db.getOptional( + sql: "SELECT * FROM attachments WHERE id = ?", + parameters: [photoId], + mapper: { cursor in + try Attachment.fromCursor(cursor) + } + ) else { + return nil + } + + if attachment.state == .synced, let localUri = attachment.localUri { + return localUri + } + + return nil +} + +// Example: Display image in SwiftUI with watch query +struct ProfilePhotoView: View { + let userId: String + @State private var photoUri: String? + + var body: some View { + Group { + if let photoUri = photoUri { + AsyncImage(url: URL(fileURLWithPath: photoUri)) { image in + image.resizable() + } placeholder: { + ProgressView() + } + } else { + Text("Loading photo...") + } + } + .task { + do { + for try await results in try db.watch( + sql: """ + SELECT a.local_uri, a.state + FROM users u + LEFT JOIN attachments a ON a.id = u.photo_id + WHERE u.id = ? + """, + parameters: [userId], + mapper: { cursor in + ( + state: try AttachmentState.from(cursor.getInt(name: "state")), + localUri: try cursor.getStringOptional(name: "local_uri") + ) + } + ) { + if let first = results.first, + first.state == .synced, + let localUri = first.localUri { + photoUri = localUri + } + } + } catch { + print("Error watching photo: \(error)") + } + } + } +} ``` ```kotlin Kotlin @@ -931,7 +1138,37 @@ Future removePhotoReference( ``` ```swift Swift -// Swift TODO +func deleteProfilePhoto(userId: String, photoId: String) async throws { + try await attachmentQueue.deleteFile( + attachmentId: photoId, + + // updateHook ensures atomic deletion + updateHook: { tx, attachment in + try tx.execute( + sql: "UPDATE users SET photo_id = NULL WHERE id = ?", + parameters: [userId] + ) + } + ) + + print("Photo queued for deletion") + // The queue will: + // 1. Delete from remote storage + // 2. Delete local file + // 3. Remove attachment record +} + +// Alternative: Remove reference and let queue archive it automatically +func removePhotoReference(userId: String) async throws { + try await db.execute( + sql: "UPDATE users SET photo_id = NULL WHERE id = ?", + parameters: [userId] + ) + + // The watchAttachments callback will detect this change + // The queue will automatically archive the unreferenced attachment + // After reaching archivedCacheLimit, it will be deleted +} ``` ```kotlin Kotlin @@ -1045,6 +1282,35 @@ final queue = AttachmentQueue( ``` ```swift Swift +class CustomErrorHandler: SyncErrorHandler { + func onDownloadError(attachment: Attachment, error: Error) async -> Bool { + print("Download failed: \(attachment.filename), error: \(error)") + + // Return true to retry, false to archive + if let urlError = error as? URLError, urlError.code == .badServerResponse { + return false // File doesn't exist (404), don't retry + } + return true // Retry on network errors + } + + func onUploadError(attachment: Attachment, error: Error) async -> Bool { + print("Upload failed: \(attachment.filename), error: \(error)") + return true // Always retry uploads + } + + func onDeleteError(attachment: Attachment, error: Error) async -> Bool { + print("Delete failed: \(attachment.filename), error: \(error)") + return true // Retry deletes + } +} + +let queue = AttachmentQueue( + db: db, + remoteStorage: remoteStorage, + attachmentsDirectory: try getAttachmentsDirectoryPath(), + watchAttachments: watchAttachments, + errorHandler: CustomErrorHandler() +) ``` ```kotlin Kotlin @@ -1175,6 +1441,50 @@ class IPFSStorageAdapter implements RemoteStorage { ``` ```swift Swift +// Example: IPFS remote storage +class IPFSStorageAdapter: RemoteStorageAdapter { + func uploadFile(fileData: Data, attachment: Attachment) async throws { + // Upload to IPFS + // let cid = try await ipfs.add(fileData) + + // Store CID in your backend for retrieval + struct CIDRequest: Codable { + let attachmentId: String + let cid: String + } + + let requestBody = CIDRequest(attachmentId: attachment.id, cid: "your-cid-here") + var request = URLRequest(url: URL(string: "/api/ipfs-cids")!) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + request.httpBody = try JSONEncoder().encode(requestBody) + + _ = try await URLSession.shared.data(for: request) + } + + func downloadFile(attachment: Attachment) async throws -> Data { + // Retrieve CID from backend + struct CIDResponse: Codable { + let cid: String + } + + let request = URLRequest(url: URL(string: "/api/ipfs-cids/\(attachment.id)")!) + let (data, _) = try await URLSession.shared.data(for: request) + let response = try JSONDecoder().decode(CIDResponse.self, from: data) + + // Download from IPFS + // let fileData = try await ipfs.cat(response.cid) + // return fileData + return Data() // Replace with actual IPFS download + } + + func deleteFile(attachment: Attachment) async throws { + // IPFS is immutable, but you can unpin and remove from backend + var request = URLRequest(url: URL(string: "/api/ipfs-cids/\(attachment.id)")!) + request.httpMethod = "DELETE" + _ = try await URLSession.shared.data(for: request) + } +} ``` ```kotlin Kotlin @@ -1233,6 +1543,16 @@ await attachmentQueue.verifyAttachments(); ``` ```swift Swift +// verifyAttachments is called internally during startSync() +// If you need to manually verify, you can wait for initialization: + +try await attachmentQueue.waitForInit() + +// This checks: +// - Local files exist at expected paths +// - Repairs broken localUri references +// - Archives attachments with missing files +// - Requeues downloads for synced files with missing local copies ``` ```kotlin Kotlin @@ -1284,6 +1604,17 @@ await queue.expireCache(); ``` ```swift Swift +let queue = AttachmentQueue( + db: db, + remoteStorage: remoteStorage, + attachmentsDirectory: try getAttachmentsDirectoryPath(), + watchAttachments: watchAttachments, + // ... other options + archivedCacheLimit: 200 // Keep 200 archived files; oldest deleted when limit reached +) + +// For manually expiring the cache +try await queue.expireCache() ``` ```kotlin Kotlin From 00987c145e91b1b2be113411557a66cf405a3c26 Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 17:11:46 +0800 Subject: [PATCH 06/14] docs: add deprecation warnings --- usage/use-case-examples/attachments-files.mdx | 49 ++++++------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 667cb8e..9552fd1 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -6,6 +6,10 @@ mode: wide ## Introduction + +The `@powersync/attachments` package (JavaScript/TypeScript) and `powersync_attachments_helper` package (Flutter/Dart) are deprecated. Attachment functionality is now built-in to the PowerSync SDKs. Please use the built-in attachment helpers instead. + + While PowerSync excels at syncing structured data, storing large files (images, videos, PDFs) directly in SQLite is not recommended. Embedding files as base64-encoded data or binary blobs in database rows can lead to many issues. Instead, PowerSync uses a **metadata + storage provider pattern**: sync small metadata records through PowerSync while storing actual files in purpose-built storage systems (S3, Supabase Storage, Cloudflare R2, etc.). This approach provides: @@ -1526,52 +1530,29 @@ class IPFSStorageAdapter : RemoteStorage { ### Verification and Recovery -verifyAttachments is called internally during `startSync()`. If you need to manually verify, you can access the internal method or implement your own verification logic by checking attachment records and their local files +`verifyAttachments()` is always called internally during `startSync()`. + +This method does the following: +1- Local files exist at expected paths +2- Repairs broken localUri references +3- Archives attachments with missing files +3- Requeues downloads for synced files with missing local copies ```typescript Javascript/Typescript await attachmentQueue.verifyAttachments(); - -// This checks: -// - Local files exist at expected paths -// - Repairs broken localUri references -// - Archives attachments with missing files -// - Requeues downloads for synced files with missing local copies ``` ```dart Flutter +WIP need to expose the function publicly ``` ```swift Swift -// verifyAttachments is called internally during startSync() -// If you need to manually verify, you can wait for initialization: - try await attachmentQueue.waitForInit() - -// This checks: -// - Local files exist at expected paths -// - Repairs broken localUri references -// - Archives attachments with missing files -// - Requeues downloads for synced files with missing local copies ``` ```kotlin Kotlin -// The verify attachment method is currently private in Kotlin SDK - -// Example: Manual verification -suspend fun verifyAttachments() { - attachmentQueue.attachmentsService.withContext { context -> - val attachments = context.getAttachments() - attachments.forEach { attachment -> - if (attachment.localUri != null) { - val exists = attachmentQueue.localStorage.fileExists(attachment.localUri) - if (!exists && attachment.state == AttachmentState.SYNCED) { - // Handle missing file - } - } - } - } -} +WIP need to expose the function publicly ``` @@ -1650,7 +1631,9 @@ We provide attachment helpers for multiple platforms: | **Kotlin** | [Built-in attachments](https://github.com/powersync-ja/powersync-kotlin/tree/main/core/src/commonMain/kotlin/com/powersync/attachments) | [Android Todo](https://github.com/powersync-ja/powersync-kotlin/tree/main/demos/android-supabase-todolist) | | **Swift** | [Built-in attachments](https://github.com/powersync-ja/powersync-swift/blob/main/Sources/PowerSync/attachments/README.md) | [iOS Demo](https://github.com/powersync-ja/powersync-swift/tree/main/Demo) | -// TODO add deprecation note about js and dart old packages + +The `@powersync/attachments` package (JavaScript/TypeScript) and `powersync_attachments_helper` package (Flutter/Dart) are deprecated. Attachment functionality is now built-in to the PowerSync SDKs. Please use the built-in attachment helpers instead. + Most demo applications use Supabase Storage as the storage provider, but the patterns are adaptable to any storage system. From f3c095dc68a4aabe8fe0003da85725804fa89230 Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 18:01:49 +0800 Subject: [PATCH 07/14] docs: update import paths and correct Kotlin attachment links --- usage/use-case-examples/attachments-files.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 9552fd1..5b6a06e 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -243,7 +243,7 @@ const localStorage = new IndexDBFileSystemStorageAdapter('my-app-files'); // const localStorage = new NodeFileSystemAdapter('./user-attachments'); // For React Native Expo (Expo file system) -// import { ExpoFileSystemAdapter } from `@powersync/node`; +// import { ExpoFileSystemAdapter } from `@powersync/react-native`; // const localStorage = new ExpoFileSystemAdapter(); // Remote storage adapter (example with signed URLs) @@ -1628,8 +1628,8 @@ We provide attachment helpers for multiple platforms: |-----|---------|------------------| | **JavaScript/TypeScript** | [Built-in attachment](https://github.com/powersync-ja/powersync-js/tree/main/packages/common/src/attachments) | [React Native Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-native-supabase-todolist) · [React Web Todo](https://github.com/powersync-ja/powersync-js/tree/main/demos/react-supabase-todolist) | | **Flutter** | [Built-in attachment](https://pub.dev/documentation/powersync_core/latest/topics/attachments-topic.html) | [Flutter Todo](https://github.com/powersync-ja/powersync.dart/tree/main/demos/supabase-todolist) | -| **Kotlin** | [Built-in attachments](https://github.com/powersync-ja/powersync-kotlin/tree/main/core/src/commonMain/kotlin/com/powersync/attachments) | [Android Todo](https://github.com/powersync-ja/powersync-kotlin/tree/main/demos/android-supabase-todolist) | | **Swift** | [Built-in attachments](https://github.com/powersync-ja/powersync-swift/blob/main/Sources/PowerSync/attachments/README.md) | [iOS Demo](https://github.com/powersync-ja/powersync-swift/tree/main/Demo) | +| **Kotlin** | [Built-in attachments](https://github.com/powersync-ja/powersync-kotlin/tree/main/common/src/commonMain/kotlin/com/powersync/attachments) | [Android Todo](https://github.com/powersync-ja/powersync-kotlin/tree/main/demos/android-supabase-todolist) | The `@powersync/attachments` package (JavaScript/TypeScript) and `powersync_attachments_helper` package (Flutter/Dart) are deprecated. Attachment functionality is now built-in to the PowerSync SDKs. Please use the built-in attachment helpers instead. From b272c2cc0d20e0969fe9f3d3d28bf97a200dcf69 Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 20 Nov 2025 18:03:39 +0800 Subject: [PATCH 08/14] docs: update attachment documentation to include PDF attachments and remove JavaScript SDK reference --- usage/use-case-examples/attachments-files.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 5b6a06e..880e00b 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -1643,6 +1643,6 @@ Most demo applications use Supabase Storage as the storage provider, but the pat - **[Supabase Storage Integration](/integration-guides/supabase-+-powersync/handling-attachments)** - Detailed guide for using Supabase Storage - **[AWS S3 Storage Adapter Tutorial](/tutorials/client/attachments-and-files/aws-s3-storage-adapter)** - How to implement an S3 adapter -- **[JavaScript SDK Documentation](https://www.npmjs.com/package/@powersync/attachments)** - Complete API reference +- **[PDF Attachments](tutorials/client/attachments-and-files/pdf-attachment)** - Complete API reference --- From 8c4ac84ef52e0d22a95d2c8ac33eabeadd3967fa Mon Sep 17 00:00:00 2001 From: Amine Date: Mon, 24 Nov 2025 12:53:34 +0800 Subject: [PATCH 09/14] docs: added some suggestions in --- usage/use-case-examples/attachments-files.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index 880e00b..aad4f74 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -74,7 +74,7 @@ The **Attachment Table** is a local-only table that stores metadata about each f ### Remote Storage Adapter -The **Remote Storage Adapter** is an interface you implement to connect PowerSync with your cloud storage provider. It's completely platform-agnostic - use S3, Supabase Storage, Cloudflare R2, Azure Blob, or even IPFS. +The **Remote Storage Adapter** is an interface you implement to connect PowerSync with your cloud storage provider. It's completely platform-agnostic - Implementations can use S3, Supabase Storage, Cloudflare R2, Azure Blob, or even IPFS. **Interface methods:** - `uploadFile(fileData, attachment)` - Upload file to cloud storage @@ -110,7 +110,7 @@ The **Local Storage Adapter** handles file persistence on the device. PowerSync The **Attachment Queue** is the orchestrator that manages the entire attachment lifecycle. It: -- **Watches your data model** - You provide a `watchAttachments` callback that monitors which files your app references +- **Watches your data model** - You pass a `watchAttachments` function as a parameter that monitors which files your app references - **Manages state transitions** - Automatically moves files through states (upload/download → synced → archive → delete) - **Handles retries** - Failed operations are retried on the next sync interval - **Performs cleanup** - Removes archived files that are no longer needed @@ -135,7 +135,7 @@ The queue compares this list with its internal attachment table to determine: ```bash JavaScript/TypeScript -comes with web, node and react-native packages +Included with web, node and react-native packages ``` ```bash Flutter From 795b29d440e1db7c4651cf5c883f5c86a66d3f7a Mon Sep 17 00:00:00 2001 From: Amine Date: Wed, 26 Nov 2025 19:41:07 +0800 Subject: [PATCH 10/14] docs: add new patterns and detailed examples for watching multiple attachment types using single and multiple queues --- usage/use-case-examples/attachments-files.mdx | 436 +++++++++++++++++- 1 file changed, 431 insertions(+), 5 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index aad4f74..fa7afe2 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -117,16 +117,60 @@ The **Attachment Queue** is the orchestrator that manages the entire attachment - **Verifies integrity** - Checks local files exist and repairs inconsistencies **Watched Attachments pattern:** -The queue needs to know which attachments exist in your data model. For example, if users have profile photos, the following query can be used by the queue to operate on these attachments: +The queue needs to know which attachments exist in your data model. The `watchAttachments` function you provide monitors your data model and returns a list of attachment IDs that your app references. The queue compares this list with its internal attachment table to determine: +- **New attachments** - Download them +- **Missing attachments** - Upload them +- **Removed attachments** - Archive them + +The `watchAttachments` queries are reactive and execute whenever the watched tables change, keeping the attachment queue synchronized with your data model. + +There are a few scenarios you might encounter: + +**Single Attachment Type** + +For a single attachment type, you watch one table. For example, if users have profile photos: ```sql SELECT photo_id FROM users WHERE photo_id IS NOT NULL ``` -The queue compares this list with its internal attachment table to determine: -- **New attachments** - Download them -- **Missing attachments** - Upload them -- **Removed attachments** - Archive them +**Multiple Attachment Types - Single Queue** + +You can watch multiple attachment types using a single queue by combining queries with SQL `UNION` or `UNION ALL`. This allows you to monitor attachments across different tables (e.g., `users.photo_id`, `documents.document_id`, `videos.video_id`) in one queue. Each attachment type may have different file extensions, which can be handled in the query by selecting the extension from your data model or using type-specific defaults. + +For example: + +```sql +SELECT photo_id as id, photo_file_extension as file_extension +FROM users +WHERE photo_id IS NOT NULL + +UNION ALL + +SELECT document_id as id, document_file_extension as file_extension +FROM documents +WHERE document_id IS NOT NULL + +UNION ALL + +SELECT video_id as id, video_file_extension as file_extension +FROM videos +WHERE video_id IS NOT NULL +``` + +Use `UNION ALL` when you want to include all rows (including duplicates), or `UNION` when you want to automatically deduplicate results. For attachment watching, `UNION ALL` is typically preferred since attachment IDs should already be unique. + + +The UNION query executes whenever any of the watched tables change, which may have higher database overhead compared to watching a single table. Implementation examples are shown in the [Initialize Attachment Queue](#initialize-attachment-queue) section below. + + +**Multiple Attachment Types - Multiple Queues** + +Alternatively, you can create separate queues for different attachment types. Each queue watches its own specific table(s) with simpler queries, allowing for independent configuration and management. + + +Multiple queues may use more memory, but each queue watches simpler queries. Implementation examples are shown in the [Initialize Attachment Queue](#initialize-attachment-queue) section below. + ## Implementation Guide @@ -660,6 +704,388 @@ attachmentQueue.startSync() The `watchAttachments` callback is crucial - it tells the queue which files your app needs based on your data model. The queue uses this to automatically download, upload, or archive files. +#### Watching Multiple Attachment Types + +When watching multiple attachment types, you need to provide the `fileExtension` (or `filename`) for each attachment. You can store this in your data model tables or derive it from other fields. Here are examples for both patterns: + +**Pattern 2: Single Queue with UNION** + + + +```typescript JavaScript/TypeScript +// Example: Watching users.photo_id, documents.document_id, and videos.video_id +// Assuming your tables store file extensions +const attachmentQueue = new AttachmentQueue({ + db: db, + localStorage, + remoteStorage, + + watchAttachments: (onUpdate) => { + db.watch( + `SELECT photo_id as id, photo_file_extension as file_extension + FROM users + WHERE photo_id IS NOT NULL + + UNION ALL + + SELECT document_id as id, document_file_extension as file_extension + FROM documents + WHERE document_id IS NOT NULL + + UNION ALL + + SELECT video_id as id, video_file_extension as file_extension + FROM videos + WHERE video_id IS NOT NULL`, + [], + { + onResult: async (result) => { + const attachments = result.rows?._array.map(row => ({ + id: row.id, + fileExtension: row.file_extension + })) ?? []; + await onUpdate(attachments); + } + } + ); + }, + + // ... other options +}); + +await attachmentQueue.startSync(); +``` + +```dart Flutter +// Example: Watching users.photo_id, documents.document_id, and videos.video_id +// Assuming your tables store file extensions +attachmentQueue = AttachmentQueue( + db: db, + remoteStorage: SignedUrlStorageAdapter(), + localStorage: await getLocalStorage(), + + watchAttachments: () => db.watch(''' + SELECT photo_id as id, photo_file_extension as file_extension + FROM users + WHERE photo_id IS NOT NULL + + UNION ALL + + SELECT document_id as id, document_file_extension as file_extension + FROM documents + WHERE document_id IS NOT NULL + + UNION ALL + + SELECT video_id as id, video_file_extension as file_extension + FROM videos + WHERE video_id IS NOT NULL + ''').map( + (results) => [ + for (final row in results) + WatchedAttachmentItem( + id: row['id'] as String, + fileExtension: row['file_extension'] as String, + ) + ], + ), + + // ... other options +); + +await attachmentQueue.startSync(); +``` + +```swift Swift +// Example: Watching users.photo_id, documents.document_id, and videos.video_id +// Assuming your tables store file extensions +let attachmentQueue = AttachmentQueue( + db: db, + remoteStorage: remoteStorage, + attachmentsDirectory: try getAttachmentsDirectoryPath(), + + watchAttachments: { + try db.watch( + sql: """ + SELECT photo_id as id, photo_file_extension as file_extension + FROM users + WHERE photo_id IS NOT NULL + + UNION ALL + + SELECT document_id as id, document_file_extension as file_extension + FROM documents + WHERE document_id IS NOT NULL + + UNION ALL + + SELECT video_id as id, video_file_extension as file_extension + FROM videos + WHERE video_id IS NOT NULL + """, + parameters: [], + mapper: { cursor in + try WatchedAttachmentItem( + id: cursor.getString(name: "id"), + fileExtension: cursor.getString(name: "file_extension") + ) + } + ) + }, + + // ... other options +) + +try await attachmentQueue.startSync() +``` + +```kotlin Kotlin +// Example: Watching users.photo_id, documents.document_id, and videos.video_id +// Assuming your tables store file extensions +val attachmentQueue = AttachmentQueue( + db = db, + remoteStorage = remoteStorage, + attachmentsDirectory = attachmentsDirectory, + localStorage = localStorage, + + watchAttachments = { + db.watch( + sql = """ + SELECT photo_id as id, photo_file_extension as file_extension + FROM users + WHERE photo_id IS NOT NULL + + UNION ALL + + SELECT document_id as id, document_file_extension as file_extension + FROM documents + WHERE document_id IS NOT NULL + + UNION ALL + + SELECT video_id as id, video_file_extension as file_extension + FROM videos + WHERE video_id IS NOT NULL + """, + parameters = null + ) { cursor -> + WatchedAttachmentItem( + id = cursor.getString("id"), + fileExtension = cursor.getString("file_extension") + ) + } + }, + + // ... other options +) + +attachmentQueue.startSync() +``` + + + +**Pattern 3: Multiple Queues** + + + +```typescript JavaScript/TypeScript +// Create separate queues for different attachment types +const photoQueue = new AttachmentQueue({ + db: db, + localStorage, + remoteStorage, + watchAttachments: (onUpdate) => { + db.watch( + `SELECT photo_id FROM users WHERE photo_id IS NOT NULL`, + [], + { + onResult: async (result) => { + const attachments = result.rows?._array.map(row => ({ + id: row.photo_id, + fileExtension: 'jpg' + })) ?? []; + await onUpdate(attachments); + } + } + ); + }, +}); + +const documentQueue = new AttachmentQueue({ + db: db, + localStorage, + remoteStorage, + watchAttachments: (onUpdate) => { + db.watch( + `SELECT document_id FROM documents WHERE document_id IS NOT NULL`, + [], + { + onResult: async (result) => { + const attachments = result.rows?._array.map(row => ({ + id: row.document_id, + fileExtension: 'pdf' + })) ?? []; + await onUpdate(attachments); + } + } + ); + }, +}); + +await Promise.all([ + photoQueue.startSync(), + documentQueue.startSync() +]); +``` + +```dart Flutter +// Create separate queues for different attachment types +final photoQueue = AttachmentQueue( + db: db, + remoteStorage: SignedUrlStorageAdapter(), + localStorage: await getLocalStorage(), + watchAttachments: () => db.watch(''' + SELECT photo_id as id + FROM users + WHERE photo_id IS NOT NULL + ''').map( + (results) => [ + for (final row in results) + WatchedAttachmentItem( + id: row['id'] as String, + fileExtension: 'jpg', + ) + ], + ), +); + +final documentQueue = AttachmentQueue( + db: db, + remoteStorage: SignedUrlStorageAdapter(), + localStorage: await getLocalStorage(), + watchAttachments: () => db.watch(''' + SELECT document_id as id + FROM documents + WHERE document_id IS NOT NULL + ''').map( + (results) => [ + for (final row in results) + WatchedAttachmentItem( + id: row['id'] as String, + fileExtension: 'pdf', + ) + ], + ), +); + +await Future.wait([ + photoQueue.startSync(), + documentQueue.startSync(), +]); +``` + +```swift Swift +// Create separate queues for different attachment types +let photoQueue = AttachmentQueue( + db: db, + remoteStorage: remoteStorage, + attachmentsDirectory: try getAttachmentsDirectoryPath(), + watchAttachments: { + try db.watch( + sql: """ + SELECT photo_id + FROM users + WHERE photo_id IS NOT NULL + """, + parameters: [], + mapper: { cursor in + try WatchedAttachmentItem( + id: cursor.getString(name: "photo_id"), + fileExtension: "jpg" + ) + } + ) + } +) + +let documentQueue = AttachmentQueue( + db: db, + remoteStorage: remoteStorage, + attachmentsDirectory: try getAttachmentsDirectoryPath(), + watchAttachments: { + try db.watch( + sql: """ + SELECT document_id + FROM documents + WHERE document_id IS NOT NULL + """, + parameters: [], + mapper: { cursor in + try WatchedAttachmentItem( + id: cursor.getString(name: "document_id"), + fileExtension: "pdf" + ) + } + ) + } +) + +try await photoQueue.startSync() +try await documentQueue.startSync() +``` + +```kotlin Kotlin +// Create separate queues for different attachment types +val photoQueue = AttachmentQueue( + db = db, + remoteStorage = remoteStorage, + attachmentsDirectory = attachmentsDirectory, + localStorage = localStorage, + watchAttachments = { + db.watch( + sql = """ + SELECT photo_id + FROM users + WHERE photo_id IS NOT NULL + """, + parameters = null + ) { cursor -> + WatchedAttachmentItem( + id = cursor.getString("photo_id"), + fileExtension = "jpg" + ) + } + } +) + +val documentQueue = AttachmentQueue( + db = db, + remoteStorage = remoteStorage, + attachmentsDirectory = attachmentsDirectory, + localStorage = localStorage, + watchAttachments = { + db.watch( + sql = """ + SELECT document_id + FROM documents + WHERE document_id IS NOT NULL + """, + parameters = null + ) { cursor -> + WatchedAttachmentItem( + id = cursor.getString("document_id"), + fileExtension = "pdf" + ) + } + } +) + +photoQueue.startSync() +documentQueue.startSync() +``` + + + ### Upload an Attachment From 80b8360f394f0763a76894c70cbb3b79e5d201d9 Mon Sep 17 00:00:00 2001 From: Amine Date: Fri, 28 Nov 2025 16:36:25 +0800 Subject: [PATCH 11/14] docs: remove the filename requirements for now --- usage/use-case-examples/attachments-files.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index fa7afe2..a57a479 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -706,7 +706,7 @@ The `watchAttachments` callback is crucial - it tells the queue which files your #### Watching Multiple Attachment Types -When watching multiple attachment types, you need to provide the `fileExtension` (or `filename`) for each attachment. You can store this in your data model tables or derive it from other fields. Here are examples for both patterns: +When watching multiple attachment types, you need to provide the `fileExtension` for each attachment. You can store this in your data model tables or derive it from other fields. Here are examples for both patterns: **Pattern 2: Single Queue with UNION** From fa3cf60a1c0ca3d0e2d251bf8021ceccf1987311 Mon Sep 17 00:00:00 2001 From: Amine Date: Fri, 28 Nov 2025 16:38:32 +0800 Subject: [PATCH 12/14] docs: standardize fileExtension formatting in attachment examples --- usage/use-case-examples/attachments-files.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index a57a479..bba0fad 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -565,7 +565,7 @@ const attachmentQueue = new AttachmentQueue({ onResult: async (result) => { const attachments = result.rows?._array.map(row => ({ id: row.photo_id, - fileExtension: 'jpg' // or use full filename + fileExtension: 'jpg' })) ?? []; await onUpdate(attachments); } @@ -607,7 +607,7 @@ Future initializeAttachmentQueue(PowerSyncDatabase db) async { for (final row in results) WatchedAttachmentItem( id: row['id'] as String, - fileExtension: 'jpg', // or use full filename + fileExtension: 'jpg', ) ], ), @@ -642,7 +642,7 @@ let attachmentQueue = AttachmentQueue( mapper: { cursor in try WatchedAttachmentItem( id: cursor.getString(name: "photo_id"), - fileExtension: "jpg" // or use full filename + fileExtension: "jpg" ) } ) @@ -683,7 +683,7 @@ val attachmentQueue = AttachmentQueue( ) { cursor -> WatchedAttachmentItem( id = cursor.getString("photo_id"), - fileExtension = "jpg" // or use full filename + fileExtension = "jpg" ) } }, From ecf209b45852dc4980117b9f1718484e72978ca6 Mon Sep 17 00:00:00 2001 From: Amine Date: Mon, 1 Dec 2025 11:17:01 +0800 Subject: [PATCH 13/14] docs: update attachment-related documentation structure and redirect paths --- docs.json | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/docs.json b/docs.json index 23f99cd..c48e6b3 100644 --- a/docs.json +++ b/docs.json @@ -216,7 +216,6 @@ "group": "Supabase", "pages": [ "integration-guides/supabase-+-powersync", - "integration-guides/supabase-+-powersync/handling-attachments", "integration-guides/supabase-+-powersync/realtime-streaming", "integration-guides/supabase-+-powersync/rls-and-sync-rules", "integration-guides/supabase-+-powersync/local-development" @@ -424,14 +423,6 @@ "tutorials/client/sdks/web/next-js" ] }, - { - "group": "Attachments / Files", - "pages": [ - "tutorials/client/attachments-and-files/overview", - "tutorials/client/attachments-and-files/aws-s3-storage-adapter", - "tutorials/client/attachments-and-files/pdf-attachment" - ] - }, { "group": "Performance", "pages": [ @@ -693,6 +684,22 @@ { "source": "/client-sdk-references/kotlin-multiplatform/libraries/room", "destination": "/client-sdk-references/kotlin/libraries/room" + }, + { + "source": "/tutorials/client/attachments-and-files/overview", + "destination": "/usage/use-case-examples/attachments-files" + }, + { + "source": "/tutorials/client/attachments-and-files/aws-s3-storage-adapter", + "destination": "/usage/use-case-examples/attachments-files" + }, + { + "source": "/tutorials/client/attachments-and-files/pdf-attachment", + "destination": "/usage/use-case-examples/attachments-files" + }, + { + "source": "/integration-guides/supabase-+-powersync/handling-attachments", + "destination": "/usage/use-case-examples/attachments-files" } ] } From c15b2131d4e4b52a8b9cc9bd197755c72e02eb4f Mon Sep 17 00:00:00 2001 From: Amine Date: Tue, 2 Dec 2025 10:25:52 +0800 Subject: [PATCH 14/14] docs: clarify example for implementing custom storage adapter for IPFS --- usage/use-case-examples/attachments-files.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/use-case-examples/attachments-files.mdx b/usage/use-case-examples/attachments-files.mdx index bba0fad..cd2484e 100644 --- a/usage/use-case-examples/attachments-files.mdx +++ b/usage/use-case-examples/attachments-files.mdx @@ -1786,7 +1786,7 @@ val queue = AttachmentQueue( ### Custom Storage Adapters -Create adapters for other storage systems: +The following is an example of how to implement a custom storage adapter for IPFS: