Files
latosa-escrima/frontend/types/types.tsx
2025-02-25 00:13:53 +01:00

69 lines
1.5 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;
category?: string;
title: string;
authorID: string;
published: string;
summary?: string;
image?: string;
author: User; // Relation to User
}
export interface Category {
category: string;
count: number;
}
export type NewBlog = Omit<
Blog,
"blogID" | "authorID" | "author" | "published"
>;
// 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;
}