115 lines
4.7 KiB
TypeScript
115 lines
4.7 KiB
TypeScript
/**
|
|
* Delade kolumnhjälpare och pg-enums för hela schemat.
|
|
* Alla enum-värden kommer från @app/shared-types så att databas,
|
|
* API och app aldrig glider isär.
|
|
*/
|
|
import { pgEnum, timestamp } from "drizzle-orm/pg-core";
|
|
import {
|
|
ACTIVITY_LEVELS,
|
|
ALLERGENS,
|
|
CONSENT_KINDS,
|
|
CONSENT_STATUSES,
|
|
COOKING_METHODS,
|
|
CREATOR_LEVELS,
|
|
CUISINES,
|
|
DATE_KINDS,
|
|
DIET_PATTERNS,
|
|
EVENT_TYPES,
|
|
EXPIRY_STATUSES,
|
|
GOAL_TYPES,
|
|
HOUSEHOLD_ROLES,
|
|
INVENTORY_SOURCES,
|
|
INVENTORY_TRANSACTION_TYPES,
|
|
JOB_STATUSES,
|
|
JOB_TYPES,
|
|
MEAL_LOG_SOURCES,
|
|
MEAL_TYPES,
|
|
MEMORY_KINDS,
|
|
NOTIFICATION_TYPES,
|
|
PRECISION_MODES,
|
|
PROFILE_VISIBILITIES,
|
|
RECIPE_DIFFICULTIES,
|
|
RECIPE_SIMILARITY_CLASSES,
|
|
RECIPE_SOURCE_TYPES,
|
|
RECIPE_STATUSES,
|
|
RECIPE_VARIANT_TYPES,
|
|
RECIPE_VERIFICATION_STATUSES,
|
|
RELIGIOUS_RULES,
|
|
SCAN_TYPES,
|
|
SEXES,
|
|
SIGNAL_ORIGINS,
|
|
STORAGE_LOCATION_TYPES,
|
|
SUBSCRIPTION_PLANS,
|
|
SUBSCRIPTION_PROVIDERS,
|
|
SUBSCRIPTION_STATUSES,
|
|
TASTE_AXES,
|
|
UNITS,
|
|
USER_ROLES,
|
|
VERIFICATION_STATUSES,
|
|
tuple,
|
|
} from "@app/shared-types";
|
|
|
|
// --- Tidsstämplar som återanvänds av alla tabeller ---
|
|
export const createdAt = () =>
|
|
timestamp("created_at", { withTimezone: true }).notNull().defaultNow();
|
|
export const updatedAt = () =>
|
|
timestamp("updated_at", { withTimezone: true }).notNull().defaultNow();
|
|
|
|
// --- pg-enums ---
|
|
export const userRoleEnum = pgEnum("user_role", tuple(USER_ROLES));
|
|
export const sexEnum = pgEnum("sex", tuple(SEXES));
|
|
export const activityLevelEnum = pgEnum("activity_level", tuple(ACTIVITY_LEVELS));
|
|
export const goalTypeEnum = pgEnum("goal_type", tuple(GOAL_TYPES));
|
|
export const dietPatternEnum = pgEnum("diet_pattern", tuple(DIET_PATTERNS));
|
|
export const religiousRuleEnum = pgEnum("religious_rule", tuple(RELIGIOUS_RULES));
|
|
export const precisionModeEnum = pgEnum("precision_mode", tuple(PRECISION_MODES));
|
|
export const allergenEnum = pgEnum("allergen", tuple(ALLERGENS));
|
|
export const consentKindEnum = pgEnum("consent_kind", tuple(CONSENT_KINDS));
|
|
export const consentStatusEnum = pgEnum("consent_status", tuple(CONSENT_STATUSES));
|
|
export const householdRoleEnum = pgEnum("household_role", tuple(HOUSEHOLD_ROLES));
|
|
export const storageLocationTypeEnum = pgEnum(
|
|
"storage_location_type",
|
|
tuple(STORAGE_LOCATION_TYPES),
|
|
);
|
|
export const unitEnum = pgEnum("unit", tuple(UNITS));
|
|
export const inventorySourceEnum = pgEnum("inventory_source", tuple(INVENTORY_SOURCES));
|
|
export const inventoryTransactionTypeEnum = pgEnum(
|
|
"inventory_transaction_type",
|
|
tuple(INVENTORY_TRANSACTION_TYPES),
|
|
);
|
|
export const expiryStatusEnum = pgEnum("expiry_status", tuple(EXPIRY_STATUSES));
|
|
export const dateKindEnum = pgEnum("date_kind", tuple(DATE_KINDS));
|
|
export const cuisineEnum = pgEnum("cuisine", tuple(CUISINES));
|
|
export const mealTypeEnum = pgEnum("meal_type", tuple(MEAL_TYPES));
|
|
export const cookingMethodEnum = pgEnum("cooking_method", tuple(COOKING_METHODS));
|
|
export const recipeDifficultyEnum = pgEnum("recipe_difficulty", tuple(RECIPE_DIFFICULTIES));
|
|
export const recipeStatusEnum = pgEnum("recipe_status", tuple(RECIPE_STATUSES));
|
|
export const recipeVerificationStatusEnum = pgEnum(
|
|
"recipe_verification_status",
|
|
tuple(RECIPE_VERIFICATION_STATUSES),
|
|
);
|
|
export const recipeVariantTypeEnum = pgEnum("recipe_variant_type", tuple(RECIPE_VARIANT_TYPES));
|
|
export const recipeSourceTypeEnum = pgEnum("recipe_source_type", tuple(RECIPE_SOURCE_TYPES));
|
|
export const recipeSimilarityClassEnum = pgEnum(
|
|
"recipe_similarity_class",
|
|
tuple(RECIPE_SIMILARITY_CLASSES),
|
|
);
|
|
export const scanTypeEnum = pgEnum("scan_type", tuple(SCAN_TYPES));
|
|
export const jobTypeEnum = pgEnum("job_type", tuple(JOB_TYPES));
|
|
export const jobStatusEnum = pgEnum("job_status", tuple(JOB_STATUSES));
|
|
export const eventTypeEnum = pgEnum("event_type", tuple(EVENT_TYPES));
|
|
export const mealLogSourceEnum = pgEnum("meal_log_source", tuple(MEAL_LOG_SOURCES));
|
|
export const memoryKindEnum = pgEnum("memory_kind", tuple(MEMORY_KINDS));
|
|
export const signalOriginEnum = pgEnum("signal_origin", tuple(SIGNAL_ORIGINS));
|
|
export const tasteAxisEnum = pgEnum("taste_axis", tuple(TASTE_AXES));
|
|
export const subscriptionPlanEnum = pgEnum("subscription_plan", tuple(SUBSCRIPTION_PLANS));
|
|
export const subscriptionStatusEnum = pgEnum("subscription_status", tuple(SUBSCRIPTION_STATUSES));
|
|
export const subscriptionProviderEnum = pgEnum(
|
|
"subscription_provider",
|
|
tuple(SUBSCRIPTION_PROVIDERS),
|
|
);
|
|
export const creatorLevelEnum = pgEnum("creator_level", tuple(CREATOR_LEVELS));
|
|
export const profileVisibilityEnum = pgEnum("profile_visibility", tuple(PROFILE_VISIBILITIES));
|
|
export const notificationTypeEnum = pgEnum("notification_type", tuple(NOTIFICATION_TYPES));
|
|
export const verificationStatusEnum = pgEnum("verification_status", tuple(VERIFICATION_STATUSES));
|