import { enumOf } from "@akanjs/base";
export const MyEnum = enumOf(["value1", "value2"] as const);
export type MyEnum = enumOf<typeof MyEnum>;
export const Status = enumOf(["active", "pending", "archived"] as const);
export type Status = enumOf<typeof Status>;
@Field.Prop(() => String, {
enum: Status,
default: "active"
})
status: Status;
@Field.Prop(() => [String], {
enum: UserRole
})
roles: UserRole[];
@Filter.Mongo()
filterByStatus(
@Filter.Arg("status", () => String, {
enum: Status
})
status: Status
) {
return { status };
}
Status.has("active"); // true
Status.has("invalid"); // false
Status.indexOf("archived"); // Returns 2
// Find
Status.find((val) => val.includes("a"));
// Filter
Status.filter((val) => val.startsWith("a"));
// Map
Status.map((val) => val.toUpperCase());
export const TicketStatus = enumOf([
"active",
"rejected",
"opened",
"inProgress",
"done",
"reviewing",
"feedback",
"completed",
"archived",
] as const);
static getActiveTickets(tickets: LightTicket[]) {
return tickets.filter(t =>
["active", "inProgress"].includes(t.status)
);
}