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
- Migrating functions from between regions...
Hi Appwrite team, I am running into rate limits where only part of my 77 functions are being successfully migrated (only 50 went through) via the Migration tab ...
 - Internal server Error when trying to exe...
When executing the function locally it works fine, but when the function is deployed I get this error: ```requests.exceptions.HTTPError: 500 Server Error: Inter...
 - Dynamic Roles
I tried to store a row with this permissions: permissions.push( Permission.read(Role.users("verified")), Permission.write(Role.label(`c-${calend...