7.1 KiB
Products Collection Schema
Diese Datei beschreibt alle Attribute, die in der products Collection benötigt werden, damit das Programm funktioniert.
Collection: products
Collection ID: products (oder über VITE_APPWRITE_PRODUCTS_COLLECTION_ID konfiguriert)
Erforderliche Attribute
1. product_account_id (String, Required)
- Typ: String
- Required: Ja
- Verwendung:
- Filterung nach Account (Query.equal)
- Verknüpfung zu Accounts-Collection
- Beispiel:
"account_123"
2. product_platform (Enum, Required)
- Typ: Enum
- Required: Ja
- Werte:
["amazon", "ebay"] - Verwendung:
- Speichert die Plattform (aktuell nur "ebay" wird verwendet)
- Beispiel:
"ebay"
3. product_platform_market (String, Required)
- Typ: String
- Required: Ja
- Verwendung:
- Speichert den Marktplatz (z.B. "DE", "US", "UK")
- Wird aus Account abgeleitet
- Beispiel:
"DE","US","UK"
4. product_platform_product_id (String, Required, Unique)
- Typ: String
- Required: Ja
- Unique: Ja (für Duplikat-Prüfung)
- Verwendung:
- Eindeutige Produkt-ID von der Plattform (z.B. eBay Item-ID)
- Wird für Duplikat-Prüfung verwendet
- Wird für Mapping zwischen Extension und Datenbank verwendet
- Beispiel:
"123456789"(eBay Item-ID)
5. product_title (String, Optional)
- Typ: String
- Required: Nein
- Verwendung:
- Produkttitel
- Wird für Anzeige in UI verwendet
- Wird für Suchfilter verwendet (client-side)
- Beispiel:
"iPhone 13 Pro Max 256GB"
6. product_price (Float, Optional)
- Typ: Float
- Required: Nein
- Verwendung:
- Produktpreis
- Wird für KPI-Berechnungen verwendet (Durchschnittspreis)
- Wird für Price Spread Insights verwendet
- Beispiel:
99.99
7. product_currency (String, Optional)
- Typ: String
- Required: Nein
- Verwendung:
- Währung (z.B. "EUR", "USD", "GBP")
- Wird aus Market abgeleitet, falls nicht vorhanden
- Beispiel:
"EUR","USD","GBP"
8. product_url (String, Optional)
- Typ: String
- Required: Nein
- Verwendung:
- URL zum Produkt auf der Plattform
- Beispiel:
"https://www.ebay.de/itm/123456789"
9. product_status (Enum, Optional)
- Typ: Enum
- Required: Nein
- Werte:
["active", "ended", "unknown"] - Verwendung:
- Status des Produkts
- Wird für Filterung verwendet (Overview KPIs, Products Page)
- Wird für Status-Filter in UI verwendet
- Default:
"unknown" - Beispiel:
"active","ended","unknown"
10. product_category (String, Optional)
- Typ: String
- Required: Nein
- Verwendung:
- Produktkategorie
- Wird für Category Share Insights verwendet
- Default:
"unknown" - Beispiel:
"Electronics","Clothing"
11. product_condition (String, Optional)
- Typ: String
- Required: Nein
- Verwendung:
- Zustand des Produkts (z.B. "New", "Used")
- Default:
"unknown" - Beispiel:
"New","Used","Refurbished"
Standard-Appwrite-Felder
Diese Felder werden automatisch von Appwrite bereitgestellt:
$id(String, Required) - Eindeutige Dokument-ID$createdAt(DateTime, Required) - Erstellungsdatum (wird für Sortierung verwendet)$updatedAt(DateTime, Required) - Aktualisierungsdatum
Indexes (Empfohlen)
Für bessere Performance sollten folgende Indexes erstellt werden:
-
Index auf
product_account_id(für Filterung)- Attribute:
product_account_id - Typ: Key
- Attribute:
-
Index auf
product_platform_product_id(für Duplikat-Prüfung)- Attribute:
product_platform_product_id - Typ: Unique Key
- Attribute:
-
Index auf
product_account_id+$createdAt(für Sortierung)- Attribute:
product_account_id,$createdAt - Typ: Composite
- Attribute:
Berechtigungen
Die Collection benötigt folgende Berechtigungen:
- Read: Authenticated Users
- Create: Authenticated Users
- Update: Authenticated Users
- Delete: Authenticated Users (optional, falls Löschen benötigt wird)
Appwrite CLI Befehle zum Erstellen
# Collection erstellen
appwrite databases createCollection \
--database-id eship-db \
--collection-id products \
--name "Products"
# Attribute erstellen
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_account_id \
--required true \
--size 255
appwrite databases createEnumAttribute \
--database-id eship-db \
--collection-id products \
--key product_platform \
--elements amazon ebay \
--required true
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_platform_market \
--required true \
--size 10
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_platform_product_id \
--required true \
--size 255
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_title \
--required false \
--size 500
appwrite databases createFloatAttribute \
--database-id eship-db \
--collection-id products \
--key product_price \
--required false
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_currency \
--required false \
--size 10
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_url \
--required false \
--size 1000
appwrite databases createEnumAttribute \
--database-id eship-db \
--collection-id products \
--key product_status \
--elements active ended unknown \
--required false
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_category \
--required false \
--size 255
appwrite databases createStringAttribute \
--database-id eship-db \
--collection-id products \
--key product_condition \
--required false \
--size 100
# Indexes erstellen
appwrite databases createIndex \
--database-id eship-db \
--collection-id products \
--key idx_account_id \
--type key \
--attributes product_account_id
appwrite databases createIndex \
--database-id eship-db \
--collection-id products \
--key idx_platform_product_id \
--type unique \
--attributes product_platform_product_id
appwrite databases createIndex \
--database-id eship-db \
--collection-id products \
--key idx_account_created \
--type key \
--attributes product_account_id $createdAt
Zusammenfassung
Erforderliche Attribute (Required):
product_account_id(String)product_platform(Enum: ["amazon", "ebay"])product_platform_market(String)product_platform_product_id(String, Unique)
Optionale Attribute:
5. product_title (String)
6. product_price (Float)
7. product_currency (String)
8. product_url (String)
9. product_status (Enum: ["active", "ended", "unknown"])
10. product_category (String)
11. product_condition (String)
Standard-Felder (automatisch):
$id(String)$createdAt(DateTime)$updatedAt(DateTime)