import { bigint, bigserial, pgEnum, pgTable, text, timestamp } from "drizzle-orm/pg-core"; import { user } from "./users"; export const fileType = pgEnum("file_type", [ // Assessment "photo_pack", "site_note", "rd_sap_site_note", "pas_2023_ventilation", "pas_2023_condition", "pas_significance", "par_photo_pack", "pas_2023_property", "pas_2023_occupancy", "ecmk_site_note", "ecmk_rd_sap_site_note", "ecmk_survey_xml", // Contractor install documentation // Photos "pre_photo", "mid_photo", "post_photo", "loft_hatch_photo", "dmev_photos", "door_undercut_photos", "trickle_vent_photos", // Pre-installation "pre_installation_building_inspection", "point_of_work_risk_assessment", // Compliance & lodgement "claim_of_compliance", "mcs_compliance_certificate", "certificate_of_conformity", "minor_works_electrical_certificate", "trustmark_licence_numbers", "operative_competency", // Ventilation "ventilation_assessment_checklist", "anemometer_readings", "commissioning_records", "part_f_ventilation_document", // Handover & warranties "handover_pack", "insurance_guarantee", "workmanship_warranty", "g98_notification", // Qualifications & other "installer_qualifications", "installer_feedback", "contractor_other", // MagicPlan "magic_plan_json", // Coordination "improvement_option_evaluation", "medium_term_improvement_plan", // Design "retrofit_design_doc", // Audit "ventilation_audit", // Other "other" ]); export const fileSource = pgEnum("file_source", [ "pas hub", "sharepoint", "hubspot", "ecmk", "contractor", "magic_plan", "coordination_hub", "audit_generator" ]); export const uploadedFiles = pgTable( "uploaded_files", { id: bigserial("id", { mode: "bigint" }).primaryKey(), s3FileBucket: text("s3_file_bucket").notNull(), s3FileKey: text("s3_file_key").notNull(), s3UploadTimestamp: timestamp("s3_upload_timestamp", { withTimezone: true }).notNull(), landlordPropertyId: text("landlord_property_id"), uprn: bigint("uprn", { mode: "bigint" }), hubsotDealId: text("hubspot_deal_id"), hubspotListingId: bigint("hubspot_listing_id", { mode: "bigint" }), fileType: fileType("file_type"), source: fileSource("file_source"), measureName: text("measure_name"), uploadedBy: bigint("uploaded_by", { mode: "bigint" }).references(() => user.id), } );