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
- Added Custom Domain - API requests with ...
I've added in a custom domain to Appwrite my domain itself is on cloudflare but has Appwrite name servers added and confirmed they work, I added the CAA in clou...
- Table contents missing (attributes+rows)
Here is an image of the cloud and the attributes that should exist Some of the table do have the data but others dont. I am able to access the rows via api c...
- Bug Report: type generation for enum of ...
### 👟 Reproduction steps in the enum element value, instead of English, use another language (Khmer), in my case Khmer text. ``` export enum ProvinceType { ...