Skip to content

Commit 309ff4f

Browse files
authored
Merge pull request #2676 from appwrite/full-schema
Full schema
2 parents e1cba7a + 55ec8b5 commit 309ff4f

File tree

4 files changed

+151
-2
lines changed

4 files changed

+151
-2
lines changed

src/routes/blog/author/aditya-oberai/+page.markdoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
layout: author
33
slug: aditya-oberai
44
name: Aditya Oberai
5-
role: Developer Advocate
5+
role: Developer Relations Lead
66
bio: Hackathons, communities, developer relations, and open source
77
avatar: /images/avatars/aditya.png
8-
twitter: https://x.com/adityaoberai1
8+
twitter: https://x.com/adityaoberai
99
github: https://github.com/adityaoberai
1010
linkedin: https://www.linkedin.com/in/adityaoberai1
1111
---
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
---
2+
layout: post
3+
title: "Announcing Full Schema Creation: Provision complete tables in one atomic call"
4+
description: Create a table, all its columns, and indexes synchronously, ready to use instantly, with no background jobs.
5+
date: 2025-12-30
6+
cover: /images/blog/full-schema.png
7+
timeToRead: 5
8+
author: aditya-oberai
9+
category: announcement
10+
featured: false
11+
callToAction: true
12+
---
13+
14+
When you’re spinning up a new feature, environment, or test pipeline, schema creation shouldn’t be the slowest or most fragile step in your workflow. Yet traditionally, creating a usable table meant orchestrating multiple calls, waiting on async jobs, and hoping nothing failed halfway through.
15+
16+
That’s exactly why we’re announcing **Full Schema Creation** for Appwrite Databases.
17+
18+
With Full Schema Creation, you can define an entire table, its attributes and indexes, in a **single, synchronous request**. When the call returns, the table is immediately ready for reads and writes. If anything fails along the way, nothing is created. No partial schemas. No waiting. No brittle setup scripts.
19+
20+
# One request. One outcome. Fully usable.
21+
22+
Previously, schema provisioning looked something like this:
23+
24+
1. Create a table
25+
2. Create column
26+
3. Wait for async column jobs to complete
27+
4. Create indexes
28+
5. Wait again
29+
6. Finally, the table might be usable
30+
31+
This step-wise flow introduced delays, race conditions in automation scripts, and fragile deploys, especially in CI/CD, preview environments, and migrations.
32+
33+
With Full Schema Creation, all of that collapses into a single operation. You define everything upfront, Appwrite validates it all together, and either the entire schema is created successfully, or nothing is.
34+
35+
```js
36+
const table = await tablesDB.createTable({
37+
databaseId: 'contacts_db',
38+
tableId: 'contacts',
39+
name: 'Contacts',
40+
columns: [
41+
{
42+
key: 'email',
43+
type: 'email',
44+
required: true
45+
},
46+
{
47+
key: 'name',
48+
type: 'string',
49+
size: 255,
50+
required: true
51+
},
52+
{
53+
key: 'is_active',
54+
type: 'boolean',
55+
required: true
56+
},
57+
],
58+
indexes: [
59+
{
60+
key: 'idx_email',
61+
type: 'unique',
62+
attributes: ['email']
63+
}
64+
]
65+
});
66+
```
67+
68+
# How it works
69+
70+
Full Schema Creation introduces an atomic, synchronous way to provision database schemas. Here’s what happens under the hood:
71+
72+
- **Define the full schema in one call**
73+
74+
In a single API request, you define:
75+
76+
- The table
77+
- All columns (type, length, nullability, defaults, enums, relationships)
78+
- All indexes
79+
80+
- **Synchronous apply**
81+
82+
Appwrite applies the schema immediately. The request only returns once the table is fully created and ready to read and write, without any background jobs, polling, or delays.
83+
84+
- **Atomic guarantees**
85+
86+
If any part of the schema fails validation, an invalid column, a conflicting index, or a broken relationship reference, the entire operation is rolled back. You’ll never end up with a half-created table.
87+
88+
This makes schema creation deterministic, predictable, and safe, making it ideal for automation-heavy workflows and rapid iteration.
89+
90+
# What this unlocks for you
91+
92+
- **One-shot setup:** Define a complete table in a single, atomic call.
93+
- **No async waiting:** The table is usable as soon as the API responds.
94+
- **Fewer moving parts:** Less orchestration means fewer retries and fewer failures.
95+
- **Deterministic CI/CD:** Reliable schema bootstrapping for tests, previews, and pipelines.
96+
- **Instant readiness:** Seed data and run integration tests immediately after creation.
97+
98+
# Built for teams that move fast
99+
100+
Full Schema Creation was designed with:
101+
102+
- Backend and platform engineers
103+
- CI/CD pipelines and test environments
104+
- Agencies and partners are shipping reusable templates
105+
- Teams are spinning up many short-lived environments
106+
107+
If your workflow depends on fast and repeatable schema provisioning, this feature eliminates an entire class of setup problems.
108+
109+
## Why this matters for Appwrite
110+
111+
From our side, Full Schema Creation significantly reduces time-to-first-write, helping users activate faster and ship sooner. It also eliminates a common source of schema-related support issues by making database setup simpler, safer, and more predictable.
112+
113+
# Familiar, but better
114+
115+
If this sounds familiar, that’s because similar ideas exist elsewhere:
116+
117+
- SQL databases with `CREATE TABLE` + `CREATE INDEX` in one statement
118+
- Prisma or Drizzle migrations
119+
- Hasura metadata applies
120+
121+
What’s different is bringing this experience directly into a BaaS environment—where schema creation has historically been UI-driven or step-wise and async.
122+
123+
# Get started
124+
125+
Full Schema Create is available on **Appwrite Cloud** today and supported on **self-hosted deployments.**
126+
127+
You can now provision complete, production-ready tables in one call, whether you’re bootstrapping a new feature, running CI pipelines, or spinning up preview environments.
128+
129+
No more waiting. No more partial schemas. Just clean, atomic, ready-to-use tables from the moment you create them.
130+
131+
# More resources
132+
133+
- [Announcing API for spatial columns: Build scalable location-aware apps with ease](/blog/post/announcing-spatial-columns)
134+
- [Announcing an improved Appwrite Databases experience. A completely new look and feel](/blog/post/announcing-appwrite-databases-new-ui)
135+
- [Announcing Atomic numeric operations: Safe, server-side increments and decrements](/blog/post/announcing-atomic-numeric-operations)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
layout: changelog
3+
title: "Announcing Full Schema Creation: Provision complete tables in one atomic call"
4+
date: 2025-12-30
5+
cover: /images/blog/full-schema.png
6+
---
7+
8+
Introducing a new Database feature called Full Schema Creation.
9+
10+
With Full Schema Creation, you can define an entire table, its attributes and indexes, in a single, synchronous request. When the call returns, the table is immediately ready for reads and writes. If anything fails along the way, nothing is created. No partial schemas. No waiting. No brittle setup scripts.
11+
12+
{% arrow_link href="/blog/post/announcing-full-schema-creation" %}
13+
Read the full announcement
14+
{% /arrow_link %}

static/images/blog/full-schema.png

102 KB
Loading

0 commit comments

Comments
 (0)