mirror of
https://github.com/hex248/sprint.git
synced 2026-02-08 10:33:01 +00:00
Organisation.features
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
USER_NAME_MAX_LENGTH,
|
||||
USER_USERNAME_MAX_LENGTH,
|
||||
} from "./constants";
|
||||
import { DEFAULT_FEATURES } from "./schema";
|
||||
|
||||
// error response
|
||||
|
||||
@@ -164,6 +165,13 @@ export const OrgUpdateRequestSchema = z.object({
|
||||
`Status keys must be <= ${ISSUE_STATUS_MAX_LENGTH} characters`,
|
||||
)
|
||||
.optional(),
|
||||
features: z
|
||||
.record(z.boolean())
|
||||
.refine(
|
||||
(obj) => Object.keys(obj).length === Object.keys(DEFAULT_FEATURES).length,
|
||||
"Features must include all default features",
|
||||
)
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export type OrgUpdateRequest = z.infer<typeof OrgUpdateRequestSchema>;
|
||||
|
||||
@@ -144,6 +144,7 @@ export type {
|
||||
UserRecord,
|
||||
} from "./schema";
|
||||
export {
|
||||
DEFAULT_FEATURES,
|
||||
DEFAULT_SPRINT_COLOUR,
|
||||
DEFAULT_STATUS_COLOUR,
|
||||
DEFAULT_STATUS_COLOURS,
|
||||
|
||||
@@ -28,6 +28,20 @@ export const DEFAULT_STATUS_COLOURS: Record<string, string> = {
|
||||
MERGED: DEFAULT_STATUS_COLOUR,
|
||||
};
|
||||
|
||||
export const DEFAULT_FEATURES: Record<string, boolean> = {
|
||||
userAvatars: true,
|
||||
|
||||
issueStatus: true,
|
||||
issueDescriptions: true,
|
||||
issueTimeTracking: true,
|
||||
issueAssignees: true,
|
||||
issueAssigneesShownInTable: true,
|
||||
issueCreator: true,
|
||||
issueComments: true,
|
||||
|
||||
sprints: true,
|
||||
};
|
||||
|
||||
export const iconStyles = ["lucide", "pixel", "phosphor"] as const;
|
||||
export type IconStyle = (typeof iconStyles)[number];
|
||||
|
||||
@@ -49,6 +63,7 @@ export const Organisation = pgTable("Organisation", {
|
||||
slug: varchar({ length: ORG_SLUG_MAX_LENGTH }).notNull().unique(),
|
||||
iconURL: varchar({ length: 512 }),
|
||||
statuses: json("statuses").$type<Record<string, string>>().notNull().default(DEFAULT_STATUS_COLOURS),
|
||||
features: json("features").$type<Record<string, boolean>>().notNull().default(DEFAULT_FEATURES),
|
||||
createdAt: timestamp({ withTimezone: false }).defaultNow(),
|
||||
updatedAt: timestamp({ withTimezone: false }).defaultNow(),
|
||||
});
|
||||
@@ -202,6 +217,7 @@ export type UserInsert = z.infer<typeof UserInsertSchema>;
|
||||
|
||||
export type OrganisationRecord = z.infer<typeof OrganisationSelectSchema> & {
|
||||
statuses: Record<string, string>;
|
||||
features: Record<string, boolean>;
|
||||
};
|
||||
export type OrganisationInsert = z.infer<typeof OrganisationInsertSchema>;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user