# 🔧 AppWrite Collection Setup Guide ## Problem Identified ❌ Your AppWrite collections are missing the required `userId` attribute. The error shows: ``` Invalid query: Attribute not found in schema: userId ``` ## Required Collections & Attributes ✅ You need to create these **exact** collections with **exact** attributes in your AppWrite console: ### 1. Collection: `amazon-ext-enhanced-items` **Purpose**: Enhanced items with AI-generated titles **Required Attributes**: ``` userId (string, required, 255 chars) - User identification title (string, required, 500 chars) - Product title url (string, required, 1000 chars) - Product URL price (string, optional, 50 chars) - Product price image (string, optional, 1000 chars) - Product image URL brand (string, optional, 100 chars) - Product brand aiTitle (string, optional, 500 chars) - AI-generated title createdAt (datetime, required) - Creation timestamp updatedAt (datetime, required) - Last update timestamp ``` ### 2. Collection: `amazon-ext-saved-products` **Purpose**: Basic saved products **Required Attributes**: ``` userId (string, required, 255 chars) - User identification title (string, required, 500 chars) - Product title url (string, required, 1000 chars) - Product URL price (string, optional, 50 chars) - Product price image (string, optional, 1000 chars) - Product image URL createdAt (datetime, required) - Creation timestamp ``` ### 3. Collection: `amazon_ext_blacklist` **Purpose**: Blacklisted brands per user **Required Attributes**: ``` userId (string, required, 255 chars) - User identification brand (string, required, 100 chars) - Brand name createdAt (datetime, required) - Creation timestamp ``` ### 4. Collection: `amazon-ext-enhanced-settings` **Purpose**: User settings and API keys (encrypted) **Required Attributes**: ``` userId (string, required, 255 chars) - User identification settingKey (string, required, 100 chars) - Setting key name settingValue (string, required, 2000 chars) - Setting value (encrypted for sensitive data) isEncrypted (boolean, required) - Whether value is encrypted updatedAt (datetime, required) - Last update timestamp ``` ### 5. Collection: `amazon-ext-migration-status` **Purpose**: Track data migration from localStorage **Required Attributes**: ``` userId (string, required, 255 chars) - User identification migrationType (string, required, 50 chars) - Type of migration status (string, required, 20 chars) - 'pending', 'completed', 'failed' itemCount (integer, optional) - Number of items migrated errorMessage (string, optional, 1000 chars) - Error message if failed completedAt (datetime, optional) - Completion timestamp ``` ## Step-by-Step Setup Instructions 📋 ### Step 1: Access AppWrite Console 1. Go to your AppWrite console: https://appwrite.webklar.com (or your AppWrite URL) 2. Login with your credentials 3. Select your project: `6963df38003b96dab5aa` ### Step 2: Navigate to Database 1. Click "Databases" in the left sidebar 2. Select database: `amazon-extension-db` 3. You should see your existing collections ### Step 3: Fix Each Collection For **each collection** listed above: 1. **Click on the collection name** 2. **Go to "Attributes" tab** 3. **Check if `userId` attribute exists** 4. **If missing, click "Create Attribute"**: - Type: `String` - Key: `userId` - Size: `255` - Required: `Yes` - Array: `No` 5. **Add any other missing attributes** from the lists above ### Step 4: Set Permissions For each collection, go to "Settings" tab and set permissions: **CRITICAL PERMISSIONS** (must be exact): - **Create**: `users` - **Read**: `user:$userId` - **Update**: `user:$userId` - **Delete**: `user:$userId` **How to set permissions**: 1. Click on collection name 2. Click "Settings" tab (not "Attributes") 3. Scroll to "Permissions" section 4. For each permission type, click "Add a permission" 5. Select the appropriate permission from dropdown 6. Click "Update" to save **What these permissions mean**: - `users` = Any authenticated user - `user:$userId` = Only the user whose ID matches the document's userId field This ensures **data isolation** - users can only see their own data! ## Quick Fix Commands 🚀 If you have AppWrite CLI installed, you can run these commands: ```bash # Add userId attribute to enhanced-items collection appwrite databases createStringAttribute \ --databaseId amazon-extension-db \ --collectionId amazon-ext-enhanced-items \ --key userId \ --size 255 \ --required true # Add userId attribute to saved-products collection appwrite databases createStringAttribute \ --databaseId amazon-extension-db \ --collectionId amazon-ext-saved-products \ --key userId \ --size 255 \ --required true # Add userId attribute to blacklist collection appwrite databases createStringAttribute \ --databaseId amazon-extension-db \ --collectionId amazon_ext_blacklist \ --key userId \ --size 255 \ --required true # Add userId attribute to settings collection appwrite databases createStringAttribute \ --databaseId amazon-extension-db \ --collectionId amazon-ext-enhanced-settings \ --key userId \ --size 255 \ --required true # Add userId attribute to migration-status collection appwrite databases createStringAttribute \ --databaseId amazon-extension-db \ --collectionId amazon-ext-migration-status \ --key userId \ --size 255 \ --required true ``` ## Verification ✅ After adding the attributes, test the extension: 1. **Reload the extension** in Chrome 2. **Go to Amazon** (amazon.de/s?k=smartphone) 3. **Check browser console** - should see no more "userId" errors 4. **Try Enhanced Items** - should work without errors ## Expected Console Messages ✅ After fixing the collections, you should see: ``` ✅ AppWrite connection successful ✅ Collections accessible ✅ Real-time sync working ✅ No more "userId" errors ``` ## If You Still See Errors ❌ 1. **Double-check collection names** - they must match exactly 2. **Verify attribute names** - `userId` is case-sensitive 3. **Check permissions** - users must have read/write access 4. **Clear browser cache** - reload the extension completely ## Alternative: Recreate Collections 🔄 If adding attributes doesn't work, you can: 1. **Delete existing collections** (backup data first!) 2. **Create new collections** with all required attributes 3. **Set proper permissions** 4. **Test the extension** This will give you a clean setup that matches the extension's expectations.