I am using appwrite types --language ts ./types to generate the types yielding something like:
import type { Models } from 'node-appwrite';
// This file is auto-generated by the Appwrite CLI.
// You can regenerate it by running `appwrite types --language ts ./types`.
export enum Status {
DRAFT = "draft",
PUBLISHED = "published",
CANCELLED = "cancelled"
}
export type Events = Models.Row & {
title: string;
description: string | null;
startDate: string;
endDate: string;
location: string;
status: Status;
bookingLink: string | null;
imageUrl: string | null;
}
As a consequence I can use it for server actions like this:
export const getEvents = async () => {
try {
# getting session is here
const { tablesDB } = createSessionClient(session.value);
const response = await tablesDB.listRows<Events>({
databaseId: DATABASE_ID,
tableId: EVENTS_TABLE_ID,
queries: [Query.orderDesc("$createdAt")],
});
return {
success: true,
data: response.rows,
};
} catch (error) {
return {
success: false,
error: error instanceof Error ? error.message : "Unbekannter Fehler",
};
}
};
However, using <Events> is a bit confusing as a basically create one event.
So I did export type Event = Omit<Events, keyof Models.Row>;
But then I get a typerror in the server action above:
Type 'Event' does not satisfy the constraint 'Row'.
Type 'Event' is missing the following properties from type 'Row': $id, $sequence, $tableId, $databaseId, and 3 more.ts(2344)
(alias) type Event = {
title: string;
description: string | null;
startDate: string;
endDate: string;
location: string;
status: Status;
bookingLink: string | null;
imageUrl: string | null;
}
import Event
I also tried to follow https://appwrite.io/docs/products/databases/rows#type-safety, but I really don't want to manually create the types.
How did you solve this?
Recommended threads
- Problem with the new Email policies
when user set those thing from cloud panel and when they open that page again or reload that time it forget what we have checked and it set default to false on ...
- Deleted my account, trying to signup aga...
https://cloud.appwrite.io/console/login?error=%7B%22message%22%3A%22This+email+address+must+already+be+in+its+canonical+form.+Please+remove+aliases%2C+tags%2C+o...
- Unable to create Sites or Functions with...
Heya, I was looking at the appwrite documentation for Sites API with the server api: https://appwrite.io/docs/references/cloud/server-nodejs/sites I can’t fin...