Bulk Operations
Create many items efficiently. If bulk fails, fall back to per-item creates.
Contexts bulk:
items = [{"name": "Rule 1", "content": "..."}, {"name": "Rule 2", "content": "..."}]
created = client.contexts.bulk_create(project.id, items)
Schema metadata bulk with validation:
schemas = [
{"name": "t1", "schema_data": {"table": {"name": "t1", "columns": []}}},
{"name": "dim1", "schema_data": {"table": {"dimension": {"name": "d", "content": {}}}}},
]
created = client.schema_metadata.bulk_create(project.id, schemas, validate=True)
Golden examples bulk:
examples = [
{"user_query": "How many users?", "sql_query": "SELECT COUNT(*) FROM users;"},
{"user_query": "Active users?", "sql_query": "SELECT COUNT(*) FROM users WHERE active=true;"},
]
created = client.golden_examples.bulk_create(project.id, examples)
Fallback helper:
def create_with_fallback(client, project_id, data_list, resource_name):
try:
if resource_name == "contexts":
return client.contexts.bulk_create(project_id, data_list)
elif resource_name == "schema_metadata":
return client.schema_metadata.bulk_create(project_id, data_list)
elif resource_name == "golden_examples":
return client.golden_examples.bulk_create(project_id, data_list)
except Exception:
results = []
for item_data in data_list:
try:
if resource_name == "contexts":
results.append(client.contexts.create(project_id=project_id, **item_data))
elif resource_name == "schema_metadata":
results.append(client.schema_metadata.create(project_id=project_id, **item_data))
elif resource_name == "golden_examples":
results.append(client.golden_examples.create(project_id=project_id, **item_data))
except Exception:
pass
return results