238 lines
5.4 KiB
Bash
Executable File
238 lines
5.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Directus Schema Setup and Data Import Script
|
|
# This script creates all necessary collections and imports JSON data
|
|
|
|
DIRECTUS_URL="https://spark.jumpstartscaling.com"
|
|
TOKEN="oGn-0AZjenB900pfzQYH8zCbFwGw7flU"
|
|
|
|
echo "🚀 Setting up Directus Schema and Importing Data..."
|
|
echo ""
|
|
|
|
# Function to create a collection
|
|
create_collection() {
|
|
local collection_name=$1
|
|
local schema=$2
|
|
|
|
echo "📦 Creating collection: $collection_name"
|
|
|
|
curl -k -X POST "$DIRECTUS_URL/collections" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$schema" 2>/dev/null
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Function to create a field
|
|
create_field() {
|
|
local collection=$1
|
|
local field_data=$2
|
|
|
|
curl -k -X POST "$DIRECTUS_URL/fields/$collection" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$field_data" 2>/dev/null
|
|
}
|
|
|
|
# 1. Create avatar_intelligence collection
|
|
echo "Creating avatar_intelligence collection..."
|
|
create_collection "avatar_intelligence" '{
|
|
"collection": "avatar_intelligence",
|
|
"meta": {
|
|
"icon": "person",
|
|
"note": "Avatar intelligence data for content personalization"
|
|
}
|
|
}'
|
|
|
|
create_field "avatar_intelligence" '{
|
|
"field": "id",
|
|
"type": "integer",
|
|
"meta": {"interface": "input", "special": ["auto-increment"]},
|
|
"schema": {"is_primary_key": true, "has_auto_increment": true}
|
|
}'
|
|
|
|
create_field "avatar_intelligence" '{
|
|
"field": "avatar_key",
|
|
"type": "string",
|
|
"meta": {"interface": "input", "required": true},
|
|
"schema": {"is_unique": true}
|
|
}'
|
|
|
|
create_field "avatar_intelligence" '{
|
|
"field": "data",
|
|
"type": "json",
|
|
"meta": {"interface": "input-code", "options": {"language": "json"}}
|
|
}'
|
|
|
|
# 2. Create sites collection
|
|
echo "Creating sites collection..."
|
|
create_collection "sites" '{
|
|
"collection": "sites",
|
|
"meta": {
|
|
"icon": "language",
|
|
"note": "Managed WordPress sites"
|
|
}
|
|
}'
|
|
|
|
create_field "sites" '{
|
|
"field": "id",
|
|
"type": "uuid",
|
|
"meta": {"interface": "input", "readonly": true},
|
|
"schema": {"is_primary_key": true}
|
|
}'
|
|
|
|
create_field "sites" '{
|
|
"field": "name",
|
|
"type": "string",
|
|
"meta": {"interface": "input", "required": true}
|
|
}'
|
|
|
|
create_field "sites" '{
|
|
"field": "url",
|
|
"type": "string",
|
|
"meta": {"interface": "input", "required": true}
|
|
}'
|
|
|
|
create_field "sites" '{
|
|
"field": "status",
|
|
"type": "string",
|
|
"meta": {"interface": "select-dropdown", "options": {"choices": [
|
|
{"text": "Active", "value": "active"},
|
|
{"text": "Paused", "value": "paused"},
|
|
{"text": "Archived", "value": "archived"}
|
|
]}}
|
|
}'
|
|
|
|
# 3. Create posts collection
|
|
echo "Creating posts collection..."
|
|
create_collection "posts" '{
|
|
"collection": "posts",
|
|
"meta": {
|
|
"icon": "article",
|
|
"note": "Generated content posts"
|
|
}
|
|
}'
|
|
|
|
create_field "posts" '{
|
|
"field": "id",
|
|
"type": "uuid",
|
|
"meta": {"interface": "input", "readonly": true},
|
|
"schema": {"is_primary_key": true}
|
|
}'
|
|
|
|
create_field "posts" '{
|
|
"field": "title",
|
|
"type": "string",
|
|
"meta": {"interface": "input", "required": true}
|
|
}'
|
|
|
|
create_field "posts" '{
|
|
"field": "content",
|
|
"type": "text",
|
|
"meta": {"interface": "input-rich-text-html"}
|
|
}'
|
|
|
|
create_field "posts" '{
|
|
"field": "status",
|
|
"type": "string",
|
|
"meta": {"interface": "select-dropdown", "options": {"choices": [
|
|
{"text": "Draft", "value": "draft"},
|
|
{"text": "Published", "value": "published"}
|
|
]}}
|
|
}'
|
|
|
|
create_field "posts" '{
|
|
"field": "site_id",
|
|
"type": "uuid",
|
|
"meta": {"interface": "select-dropdown-m2o", "display": "related-values"}
|
|
}'
|
|
|
|
# 4. Create pages collection
|
|
echo "Creating pages collection..."
|
|
create_collection "pages" '{
|
|
"collection": "pages",
|
|
"meta": {
|
|
"icon": "description",
|
|
"note": "Static pages"
|
|
}
|
|
}'
|
|
|
|
create_field "pages" '{
|
|
"field": "id",
|
|
"type": "uuid",
|
|
"meta": {"interface": "input", "readonly": true},
|
|
"schema": {"is_primary_key": true}
|
|
}'
|
|
|
|
create_field "pages" '{
|
|
"field": "title",
|
|
"type": "string",
|
|
"meta": {"interface": "input", "required": true}
|
|
}'
|
|
|
|
create_field "pages" '{
|
|
"field": "content",
|
|
"type": "text",
|
|
"meta": {"interface": "input-rich-text-html"}
|
|
}'
|
|
|
|
# 5. Create leads collection
|
|
echo "Creating leads collection..."
|
|
create_collection "leads" '{
|
|
"collection": "leads",
|
|
"meta": {
|
|
"icon": "contacts",
|
|
"note": "Lead capture data"
|
|
}
|
|
}'
|
|
|
|
create_field "leads" '{
|
|
"field": "id",
|
|
"type": "uuid",
|
|
"meta": {"interface": "input", "readonly": true},
|
|
"schema": {"is_primary_key": true}
|
|
}'
|
|
|
|
create_field "leads" '{
|
|
"field": "email",
|
|
"type": "string",
|
|
"meta": {"interface": "input", "required": true}
|
|
}'
|
|
|
|
create_field "leads" '{
|
|
"field": "name",
|
|
"type": "string",
|
|
"meta": {"interface": "input"}
|
|
}'
|
|
|
|
create_field "leads" '{
|
|
"field": "source",
|
|
"type": "string",
|
|
"meta": {"interface": "input"}
|
|
}'
|
|
|
|
create_field "leads" '{
|
|
"field": "created_at",
|
|
"type": "timestamp",
|
|
"meta": {"interface": "datetime", "special": ["date-created"]}
|
|
}'
|
|
|
|
echo ""
|
|
echo "✅ Schema created successfully!"
|
|
echo ""
|
|
echo "📊 Now import the JSON data files manually via Directus UI or use the import script."
|
|
echo ""
|
|
echo "Data files location in container: /directus/data/"
|
|
echo " - avatar_intelligence.json"
|
|
echo " - avatar_variants.json"
|
|
echo " - geo_intelligence.json"
|
|
echo " - spintax_dictionaries.json"
|
|
echo " - cartesian_patterns.json"
|
|
echo " - offer_blocks_universal.json"
|
|
echo " - offer_blocks_avatar_personalized.json"
|
|
echo " - offer_blocks_cartesian_engine.json"
|
|
echo " - master_meta.json"
|
|
echo ""
|
|
echo "🎉 Setup complete!"
|