Development Guides
Database Guide
Working with Appwrite database including queries, CRUD operations, and best practices.
Database Guide
Learn how to work with Appwrite database in BISO Sites.
Basic CRUD Operations
Create Document
'use server';
import { createSessionClient } from '@repo/api/server';
export async function createPost(data: PostData) {
const { db } = await createSessionClient();
const post = await db.createDocument(
process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!,
'posts',
'unique()',
data
);
return post;
}Read Documents
import { createSessionClient } from '@repo/api/server';
import { Query } from '@repo/api';
export async function getPosts() {
const { db } = await createSessionClient();
const posts = await db.listDocuments(
process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!,
'posts',
[
Query.orderDesc('$createdAt'),
Query.limit(10),
]
);
return posts.documents;
}Update Document
export async function updatePost(postId: string, data: Partial<PostData>) {
const { db } = await createSessionClient();
await db.updateDocument(
process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!,
'posts',
postId,
data
);
}Delete Document
export async function deletePost(postId: string) {
const { db } = await createSessionClient();
await db.deleteDocument(
process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!,
'posts',
postId
);
}Queries
import { Query } from '@repo/api';
// Equal
Query.equal('status', 'published')
// Not equal
Query.notEqual('status', 'draft')
// Greater than
Query.greaterThan('price', 100)
// Search
Query.search('title', 'nextjs')
// Order
Query.orderDesc('$createdAt')
// Limit
Query.limit(20)
// Offset
Query.offset(20)