Initial commit (unpacked platform)
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* 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));
|
||||
Reference in New Issue
Block a user