main function

void main()

Implementation

void main() {
  print('šŸŽÆ Mixed Model Examples\n');

  // Example 1: Schema-only validation
  print('1ļøāƒ£ Basic User (schema-only):');
  final basicUserData = {
    'id': 'user_123',
    'username': 'johndoe',
    'email': 'john@example.com',
  };

  try {
    final result = basicUserSchema.parse(basicUserData) as Map<String, dynamic>;
    print('   āœ… Valid: ${result['username']}');
  } catch (e) {
    print('   āŒ Error: $e');
  }

  // Example 2: Enhanced User validation
  print('\n2ļøāƒ£ Enhanced User (schema validation):');
  final enhancedUserData = {
    'id': 'user_456',
    'username': 'janedoe',
    'email': 'jane@example.com',
    'createdAt': '2024-01-15T10:30:00Z',
  };

  try {
    final result =
        enhancedUserSchema.parse(enhancedUserData) as Map<String, dynamic>;
    print('   āœ… Valid user:');
    print('      Username: ${result['username']}');
    print('      Email: ${result['email']}');
    print('      Created: ${result['createdAt']}');
  } catch (e) {
    print('   āŒ Error: $e');
  }

  // Example 3: Enum validation
  print('\n3ļøāƒ£ Order Status (enum validation):');
  final orderData = {'id': 'order_789', 'status': 'shipped', 'total': 149.99};

  try {
    final result = orderSchema.parse(orderData) as Map<String, dynamic>;
    print('   āœ… Valid status: ${result['status']}');
  } catch (e) {
    print('   āŒ Error: $e');
  }

  // Example 4: Nested models validation
  print('\n4ļøāƒ£ Blog Post (nested models):');
  final blogData = {
    'id': 'post_001',
    'title': 'Getting Started with Ack',
    'content': 'Learn how to use schema validation...',
    'author': enhancedUserData,
    'publishedAt': '2024-01-20T14:00:00Z',
    'tags': ['dart', 'validation', 'tutorial'],
    'viewCount': 1500,
    'featured': true,
  };

  try {
    final result = blogPostSchema.parse(blogData) as Map<String, dynamic>;
    print('   āœ… Blog post: ${result['title']}');
    print(
      '      Author: ${(result['author'] as Map<String, dynamic>)['username']}',
    );
    print('      Tags: ${(result['tags'] as List).join(', ')}');
    print('      Metadata: ${result['metadata']}');
  } catch (e) {
    print('   āŒ Error: $e');
  }

  // Example 5: Constraints validation
  print('\n5ļøāƒ£ Product Inventory (constraints):');

  // Valid data
  final validInventory = {
    'sku': 'PROD-123',
    'quantity': 50,
    'unitPrice': 29.99,
    'lastRestocked': '2024-01-15',
    'isAvailable': true,
  };

  try {
    final result =
        productInventorySchema.parse(validInventory) as Map<String, dynamic>;
    print('   āœ… Valid inventory: SKU ${result['sku']}');
  } catch (e) {
    print('   āŒ Error: $e');
  }

  // Invalid data
  final invalidInventory = {
    'sku': 'PR', // Too short
    'quantity': -5, // Negative
    'unitPrice': 0, // Below minimum
    'lastRestocked': '2024/01/15', // Wrong format
    'isAvailable': true,
  };

  try {
    productInventorySchema.parse(invalidInventory);
  } catch (e) {
    print('   āŒ Validation errors detected');
  }

  print('\n✨ Examples demonstrate:');
  print('   - Schema validation');
  print('   - Enum validation');
  print('   - Nested model support');
  print('   - Constraint validation');
  print('   - Additional properties handling');
}