Sure! Pl
This commit is contained in:
230
db.txt
Normal file
230
db.txt
Normal file
@@ -0,0 +1,230 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Appwrite schema bootstrap (4 tables) for Appwrite Server 1.8.1
|
||||
# Tables: users, accounts, products, product_details
|
||||
#
|
||||
# Notes:
|
||||
# - Appwrite CLI is compatible with Appwrite Server 1.8.x. (see sdk-for-cli README) :contentReference[oaicite:0]{index=0}
|
||||
# - The CLI supports "tables" (create-table, create-*-column, create-index). :contentReference[oaicite:1]{index=1}
|
||||
#
|
||||
# Prereqs:
|
||||
# appwrite login
|
||||
# appwrite init project
|
||||
#
|
||||
# Run:
|
||||
# chmod +x appwrite_schema_v1_8_1.sh
|
||||
# ./appwrite_schema_v1_8_1.sh
|
||||
|
||||
# ---------------- CONFIG ----------------
|
||||
DATABASE_ID="YOUR_DATABASE_ID"
|
||||
|
||||
T_USERS="users"
|
||||
T_ACCOUNTS="accounts"
|
||||
T_PRODUCTS="products"
|
||||
T_PRODUCT_DETAILS="product_details"
|
||||
|
||||
# Permissions: keep minimal for now. Adjust later.
|
||||
# Example roles: any, users, user:<id>, team:<id>
|
||||
PERMS_ANY_CRUD='["create(\\"any\\")","read(\\"any\\")","update(\\"any\\")","delete(\\"any\\")"]'
|
||||
|
||||
# If you want more locked down defaults later, tell me your exact access model.
|
||||
|
||||
# ---------------- HELPERS ----------------
|
||||
try_cmd() {
|
||||
# Run command, do not fail script if it errors (idempotent-ish).
|
||||
# Print what we tried for easy debugging.
|
||||
echo "+ $*"
|
||||
set +e
|
||||
"$@"
|
||||
local rc=$?
|
||||
set -e
|
||||
if [ $rc -ne 0 ]; then
|
||||
echo " (ignored error, rc=$rc)"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# ---------------- CREATE TABLES ----------------
|
||||
# Tip: If any of these fail because option names differ in your CLI build,
|
||||
# run: appwrite databases create-table --help
|
||||
# and replace flags accordingly.
|
||||
|
||||
try_cmd appwrite databases create-table \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_USERS" \
|
||||
--name "users" \
|
||||
--permissions "$PERMS_ANY_CRUD" \
|
||||
--row-security false
|
||||
|
||||
try_cmd appwrite databases create-table \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_ACCOUNTS" \
|
||||
--name "accounts" \
|
||||
--permissions "$PERMS_ANY_CRUD" \
|
||||
--row-security false
|
||||
|
||||
try_cmd appwrite databases create-table \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_PRODUCTS" \
|
||||
--name "products" \
|
||||
--permissions "$PERMS_ANY_CRUD" \
|
||||
--row-security false
|
||||
|
||||
try_cmd appwrite databases create-table \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_PRODUCT_DETAILS" \
|
||||
--name "product_details" \
|
||||
--permissions "$PERMS_ANY_CRUD" \
|
||||
--row-security false
|
||||
|
||||
# ---------------- USERS COLUMNS ----------------
|
||||
# You originally wanted basically no fields here. Some people keep this table empty
|
||||
# (using only system fields), but depending on tooling, an empty table can be annoying.
|
||||
# Keep one optional column for future user settings/notes.
|
||||
try_cmd appwrite databases create-string-column \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_USERS" \
|
||||
--key "user_note" \
|
||||
--size 255 \
|
||||
--required false \
|
||||
--array false
|
||||
|
||||
# ---------------- ACCOUNTS COLUMNS ----------------
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_owner_user_id" --size 64 --required false --array false
|
||||
try_cmd appwrite databases create-boolean-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_managed" --required true --array false
|
||||
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_platform" --elements '["amazon","ebay"]' --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_platform_account_id" --size 255 --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_platform_market" --size 32 --required true --array false
|
||||
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_shop_name" --size 255 --required false --array false
|
||||
try_cmd appwrite databases create-url-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_url" --required false --array false
|
||||
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_ACCOUNTS" --key "account_status" --elements '["active","unknown","disabled"]' --required false --array false
|
||||
|
||||
# ---------------- ACCOUNTS INDEXES ----------------
|
||||
try_cmd appwrite databases create-index \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_ACCOUNTS" \
|
||||
--key "accounts_unique_platform_market_accountid" \
|
||||
--type "unique" \
|
||||
--columns '["account_platform","account_platform_market","account_platform_account_id"]'
|
||||
|
||||
try_cmd appwrite databases create-index \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_ACCOUNTS" \
|
||||
--key "accounts_by_owner_user" \
|
||||
--type "key" \
|
||||
--columns '["account_owner_user_id"]'
|
||||
|
||||
# ---------------- PRODUCTS COLUMNS ----------------
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_account_id" --size 64 --required true --array false
|
||||
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_platform" --elements '["amazon","ebay"]' --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_platform_market" --size 32 --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_platform_product_id" --size 255 --required true --array false
|
||||
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_title" --size 1024 --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_category" --size 255 --required false --array false
|
||||
|
||||
try_cmd appwrite databases create-float-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_price" --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_currency" --size 8 --required true --array false
|
||||
|
||||
try_cmd appwrite databases create-integer-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_quantity" --required false --array false
|
||||
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_condition" --elements '["new","used_like_new","used_good","used_ok","parts"]' --required false --array false
|
||||
try_cmd appwrite databases create-url-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_url" --required false --array false
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCTS" --key "product_status" --elements '["active","ended","unknown"]' --required false --array false
|
||||
|
||||
# ---------------- PRODUCTS INDEXES ----------------
|
||||
try_cmd appwrite databases create-index \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_PRODUCTS" \
|
||||
--key "products_by_account" \
|
||||
--type "key" \
|
||||
--columns '["product_account_id"]'
|
||||
|
||||
try_cmd appwrite databases create-index \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_PRODUCTS" \
|
||||
--key "products_unique_account_platformproductid" \
|
||||
--type "unique" \
|
||||
--columns '["product_account_id","product_platform_product_id"]'
|
||||
|
||||
# ---------------- PRODUCT_DETAILS COLUMNS ----------------
|
||||
# 1:1 to products
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_product_id" --size 64 --required true --array false
|
||||
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_platform" --elements '["amazon","ebay"]' --required true --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_platform_market" --size 32 --required false --array false
|
||||
|
||||
# Identifiers
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_gtin" --size 32 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_ean" --size 32 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_upc" --size 32 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_isbn" --size 32 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_mpn" --size 64 --required false --array false
|
||||
|
||||
# Platform IDs
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_amazon_asin" --size 32 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_ebay_epid" --size 64 --required false --array false
|
||||
|
||||
# Brand / model
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_brand" --size 255 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_manufacturer" --size 255 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_model_name" --size 255 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_model_number" --size 255 --required false --array false
|
||||
|
||||
# Content
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_short_description" --size 2048 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_long_description" --size 8192 --required false --array false
|
||||
|
||||
# Bullet points (no arrays, no JSON)
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_1" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_2" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_3" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_4" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_5" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_6" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_7" --size 512 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_bullet_8" --size 512 --required false --array false
|
||||
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_search_terms" --size 1024 --required false --array false
|
||||
|
||||
# Variants / item specifics (common)
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_color" --size 128 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_size" --size 128 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_material" --size 128 --required false --array false
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_pattern" --size 128 --required false --array false
|
||||
|
||||
# Shipping measurements
|
||||
try_cmd appwrite databases create-float-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_length" --required false --array false
|
||||
try_cmd appwrite databases create-float-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_width" --required false --array false
|
||||
try_cmd appwrite databases create-float-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_height" --required false --array false
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_dimension_unit" --elements '["mm","cm","m","in"]' --required false --array false
|
||||
|
||||
try_cmd appwrite databases create-float-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_weight" --required false --array false
|
||||
try_cmd appwrite databases create-enum-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_weight_unit" --elements '["g","kg","oz","lb"]' --required false --array false
|
||||
|
||||
# Misc
|
||||
try_cmd appwrite databases create-string-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_country_of_origin" --size 64 --required false --array false
|
||||
try_cmd appwrite databases create-integer-column --database-id "$DATABASE_ID" --table-id "$T_PRODUCT_DETAILS" --key "product_detail_package_quantity" --required false --array false
|
||||
|
||||
# ---------------- PRODUCT_DETAILS INDEXES ----------------
|
||||
# One details row per product
|
||||
try_cmd appwrite databases create-index \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_PRODUCT_DETAILS" \
|
||||
--key "product_details_unique_product_id" \
|
||||
--type "unique" \
|
||||
--columns '["product_detail_product_id"]'
|
||||
|
||||
try_cmd appwrite databases create-index \
|
||||
--database-id "$DATABASE_ID" \
|
||||
--table-id "$T_PRODUCT_DETAILS" \
|
||||
--key "product_details_by_platform" \
|
||||
--type "key" \
|
||||
--columns '["product_detail_platform"]'
|
||||
|
||||
echo "Done. 4 tables ensured: users, accounts, products, product_details"
|
||||
Reference in New Issue
Block a user