| import pandas as pd |
| from app.metadata import metadata |
| from app.table_manager import table_manager |
| from app.row_manager import row_manager |
|
|
| def init_sample_data(user_store=None, actor='system'): |
| """Initialize sample databases and tables with data for a user""" |
| |
| |
| dbs = ['ecommerce', 'analytics', 'users_db'] |
| for db_name in dbs: |
| metadata.create_database(db_name, user_store) |
| |
| |
| table_manager.create('ecommerce', 'products', [ |
| {'name': 'id', 'type': 'int'}, |
| {'name': 'name', 'type': 'text'}, |
| {'name': 'price', 'type': 'float'}, |
| {'name': 'stock', 'type': 'int'}, |
| {'name': 'category', 'type': 'text'} |
| ], user_store) |
| |
| products_data = pd.DataFrame([ |
| {'id': 1, 'name': 'Laptop', 'price': 999.99, 'stock': 50, 'category': 'Electronics'}, |
| {'id': 2, 'name': 'Mouse', 'price': 29.99, 'stock': 200, 'category': 'Electronics'}, |
| {'id': 3, 'name': 'Keyboard', 'price': 79.99, 'stock': 150, 'category': 'Electronics'}, |
| {'id': 4, 'name': 'Monitor', 'price': 299.99, 'stock': 75, 'category': 'Electronics'}, |
| {'id': 5, 'name': 'Desk Chair', 'price': 199.99, 'stock': 30, 'category': 'Furniture'}, |
| ]) |
| row_manager.write_df('ecommerce', 'products', products_data, actor, user_store) |
| |
| table_manager.create('ecommerce', 'orders', [ |
| {'name': 'order_id', 'type': 'int'}, |
| {'name': 'customer_id', 'type': 'int'}, |
| {'name': 'product_id', 'type': 'int'}, |
| {'name': 'quantity', 'type': 'int'}, |
| {'name': 'total', 'type': 'float'}, |
| {'name': 'status', 'type': 'text'} |
| ], user_store) |
| |
| orders_data = pd.DataFrame([ |
| {'order_id': 1001, 'customer_id': 501, 'product_id': 1, 'quantity': 1, 'total': 999.99, 'status': 'shipped'}, |
| {'order_id': 1002, 'customer_id': 502, 'product_id': 2, 'quantity': 2, 'total': 59.98, 'status': 'delivered'}, |
| {'order_id': 1003, 'customer_id': 503, 'product_id': 4, 'quantity': 1, 'total': 299.99, 'status': 'pending'}, |
| ]) |
| row_manager.write_df('ecommerce', 'orders', orders_data, actor, user_store) |
| |
| |
| table_manager.create('users_db', 'customers', [ |
| {'name': 'id', 'type': 'int'}, |
| {'name': 'username', 'type': 'text'}, |
| {'name': 'email', 'type': 'text'}, |
| {'name': 'country', 'type': 'text'}, |
| {'name': 'joined_date', 'type': 'text'} |
| ], user_store) |
| |
| customers_data = pd.DataFrame([ |
| {'id': 501, 'username': 'john_doe', 'email': 'john@example.com', 'country': 'USA', 'joined_date': '2024-01-15'}, |
| {'id': 502, 'username': 'jane_smith', 'email': 'jane@example.com', 'country': 'UK', 'joined_date': '2024-02-20'}, |
| {'id': 503, 'username': 'bob_wilson', 'email': 'bob@example.com', 'country': 'Canada', 'joined_date': '2024-03-10'}, |
| {'id': 504, 'username': 'alice_brown', 'email': 'alice@example.com', 'country': 'Australia', 'joined_date': '2024-03-25'}, |
| ]) |
| row_manager.write_df('users_db', 'customers', customers_data, actor, user_store) |
| |
| |
| table_manager.create('analytics', 'page_views', [ |
| {'name': 'id', 'type': 'int'}, |
| {'name': 'page', 'type': 'text'}, |
| {'name': 'views', 'type': 'int'}, |
| {'name': 'date', 'type': 'text'} |
| ], user_store) |
| |
| analytics_data = pd.DataFrame([ |
| {'id': 1, 'page': '/home', 'views': 1500, 'date': '2024-03-01'}, |
| {'id': 2, 'page': '/products', 'views': 890, 'date': '2024-03-01'}, |
| {'id': 3, 'page': '/about', 'views': 450, 'date': '2024-03-01'}, |
| {'id': 4, 'page': '/contact', 'views': 320, 'date': '2024-03-01'}, |
| ]) |
| row_manager.write_df('analytics', 'page_views', analytics_data, actor, user_store) |
| |
| return {"ok": True, "message": "Sample data initialized with 3 databases and 5 tables"} |
|
|
|
|