64 lines
1.4 KiB
TypeScript
64 lines
1.4 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 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;
|
|
}
|