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
- Rate limit
How do I solve "Signup Failed, Rate limit for the current endpoint has been exceeded. Please try again after some time"? I have Pro and around 2k requests per ...
- Type 'Theme' does not satisfy the constr...
Type 'Theme' does not satisfy the constraint 'Row'. Type 'Theme' is missing the following properties from type 'Row': $id, $sequence, $tableId, $databaseId, a...
- Dev Keys not working
looks like dev key are broken they simply don't work i suggest remove them until you have them working otherwise they confuse devs took me few minutes trying ...