121 lines
5.7 KiB
SQL
121 lines
5.7 KiB
SQL
// =====================================================
|
|
// NEO4J SCHEMA FROM POSTGRESQL DATA
|
|
// Price-focused migration from existing PostgreSQL database
|
|
// =====================================================
|
|
|
|
// Clear existing data
|
|
MATCH (n) DETACH DELETE n;
|
|
|
|
// =====================================================
|
|
// CREATE CONSTRAINTS AND INDEXES
|
|
// =====================================================
|
|
|
|
// Create uniqueness constraints
|
|
CREATE CONSTRAINT price_tier_name_unique IF NOT EXISTS FOR (p:PriceTier) REQUIRE p.tier_name IS UNIQUE;
|
|
CREATE CONSTRAINT technology_name_unique IF NOT EXISTS FOR (t:Technology) REQUIRE t.name IS UNIQUE;
|
|
CREATE CONSTRAINT tool_name_unique IF NOT EXISTS FOR (tool:Tool) REQUIRE tool.name IS UNIQUE;
|
|
CREATE CONSTRAINT stack_name_unique IF NOT EXISTS FOR (s:TechStack) REQUIRE s.name IS UNIQUE;
|
|
|
|
// Create indexes for performance
|
|
CREATE INDEX price_tier_range_idx IF NOT EXISTS FOR (p:PriceTier) ON (p.min_price_usd, p.max_price_usd);
|
|
CREATE INDEX tech_category_idx IF NOT EXISTS FOR (t:Technology) ON (t.category);
|
|
CREATE INDEX tech_cost_idx IF NOT EXISTS FOR (t:Technology) ON (t.monthly_cost_usd);
|
|
CREATE INDEX tool_category_idx IF NOT EXISTS FOR (tool:Tool) ON (tool.category);
|
|
CREATE INDEX tool_cost_idx IF NOT EXISTS FOR (tool:Tool) ON (tool.monthly_cost_usd);
|
|
|
|
// =====================================================
|
|
// PRICE TIER NODES (from PostgreSQL price_tiers table)
|
|
// =====================================================
|
|
|
|
// These will be populated from PostgreSQL data
|
|
// Structure matches PostgreSQL price_tiers table:
|
|
// - id, tier_name, min_price_usd, max_price_usd, target_audience, typical_project_scale, description
|
|
|
|
// =====================================================
|
|
// TECHNOLOGY NODES (from PostgreSQL technology tables)
|
|
// =====================================================
|
|
|
|
// These will be populated from PostgreSQL data
|
|
// Categories: frontend_technologies, backend_technologies, database_technologies,
|
|
// cloud_technologies, testing_technologies, mobile_technologies,
|
|
// devops_technologies, ai_ml_technologies
|
|
|
|
// =====================================================
|
|
// TOOL NODES (from PostgreSQL tools table)
|
|
// =====================================================
|
|
|
|
// These will be populated from PostgreSQL data
|
|
// Structure matches PostgreSQL tools table with pricing:
|
|
// - id, name, category, description, monthly_cost_usd, setup_cost_usd,
|
|
// price_tier_id, total_cost_of_ownership_score, price_performance_ratio
|
|
|
|
// =====================================================
|
|
// TECH STACK NODES (will be generated from combinations)
|
|
// =====================================================
|
|
|
|
// These will be dynamically created based on:
|
|
// - Price tier constraints
|
|
// - Technology compatibility
|
|
// - Budget optimization
|
|
// - Domain requirements
|
|
|
|
// =====================================================
|
|
// RELATIONSHIP TYPES
|
|
// =====================================================
|
|
|
|
// Price-based relationships
|
|
// - [:BELONGS_TO_TIER] - Technology/Tool belongs to price tier
|
|
// - [:WITHIN_BUDGET] - Technology/Tool fits within budget range
|
|
// - [:COST_OPTIMIZED] - Optimal cost-performance ratio
|
|
|
|
// Technology relationships
|
|
// - [:COMPATIBLE_WITH] - Technology compatibility
|
|
// - [:USES_FRONTEND] - Stack uses frontend technology
|
|
// - [:USES_BACKEND] - Stack uses backend technology
|
|
// - [:USES_DATABASE] - Stack uses database technology
|
|
// - [:USES_CLOUD] - Stack uses cloud technology
|
|
// - [:USES_TESTING] - Stack uses testing technology
|
|
// - [:USES_MOBILE] - Stack uses mobile technology
|
|
// - [:USES_DEVOPS] - Stack uses devops technology
|
|
// - [:USES_AI_ML] - Stack uses AI/ML technology
|
|
|
|
// Tool relationships
|
|
// - [:RECOMMENDED_FOR] - Tool recommended for domain/use case
|
|
// - [:INTEGRATES_WITH] - Tool integrates with technology
|
|
// - [:SUITABLE_FOR] - Tool suitable for price tier
|
|
|
|
// =====================================================
|
|
// PRICE-BASED QUERIES (examples)
|
|
// =====================================================
|
|
|
|
// Query 1: Find technologies within budget
|
|
// MATCH (t:Technology)-[:BELONGS_TO_TIER]->(p:PriceTier)
|
|
// WHERE $budget >= p.min_price_usd AND $budget <= p.max_price_usd
|
|
// RETURN t, p ORDER BY t.total_cost_of_ownership_score DESC
|
|
|
|
// Query 2: Find optimal tech stack for budget
|
|
// MATCH (frontend:Technology {category: "frontend"})-[:BELONGS_TO_TIER]->(p1:PriceTier)
|
|
// MATCH (backend:Technology {category: "backend"})-[:BELONGS_TO_TIER]->(p2:PriceTier)
|
|
// MATCH (database:Technology {category: "database"})-[:BELONGS_TO_TIER]->(p3:PriceTier)
|
|
// MATCH (cloud:Technology {category: "cloud"})-[:BELONGS_TO_TIER]->(p4:PriceTier)
|
|
// WHERE (frontend.monthly_cost_usd + backend.monthly_cost_usd +
|
|
// database.monthly_cost_usd + cloud.monthly_cost_usd) <= $budget
|
|
// RETURN frontend, backend, database, cloud,
|
|
// (frontend.monthly_cost_usd + backend.monthly_cost_usd +
|
|
// database.monthly_cost_usd + cloud.monthly_cost_usd) as total_cost
|
|
// ORDER BY total_cost ASC,
|
|
// (frontend.total_cost_of_ownership_score + backend.total_cost_of_ownership_score +
|
|
// database.total_cost_of_ownership_score + cloud.total_cost_of_ownership_score) DESC
|
|
|
|
// Query 3: Find tools for specific price tier
|
|
// MATCH (tool:Tool)-[:BELONGS_TO_TIER]->(p:PriceTier {tier_name: $tier_name})
|
|
// RETURN tool ORDER BY tool.price_performance_ratio DESC
|
|
|
|
// =====================================================
|
|
// COMPLETION STATUS
|
|
// =====================================================
|
|
|
|
RETURN "✅ Neo4j Schema Ready for PostgreSQL Migration!" as status,
|
|
"🎯 Focus: Price-based relationships from existing PostgreSQL data" as focus,
|
|
"📊 Ready for data migration and relationship creation" as ready_state;
|