Files
latosa-escrima/frontend/types/types.tsx
2025-02-19 16:16:47 +01:00

59 lines
1.3 KiB
TypeScript

export interface Permission {
resource: string;
action: string;
}
// Role type as a string literal
export interface Role {
id: string;
name: string;
permissions?: Permission[];
}
// Status type as a string literal
export type Status = "Active" | "Inactive";
// Event type (you can expand this type as needed based on your schema)
export interface Event {
eventID: string;
title: string;
date: string; // Assuming ISO date string
}
// Blog type (you may already have this defined as shown in your previous example)
export interface Blog {
blogID: string;
slug: string;
content: string;
label?: string;
authorID: string;
published: string;
summary?: string;
image?: string;
href?: string;
author: User; // Relation to User
}
// User type definition
export interface User {
userId: string; // UUID represented as a string
firstname: string;
lastname: string;
email: string;
password?: string; // Optional field, since it's omitted in the JSON
phone: string;
role: Role; // 'admin' or 'user'
createdAt: string; // ISO date string
updatedAt: string; // ISO date string
events?: Event[]; // Many-to-many relation with Event (optional)
articles?: Blog[]; // One-to-many relation with Blog (optional)
roles?: Role[];
}
export interface ApiResponse<T> {
status: "Error" | "Success";
message: string;
data?: T;
}