@stayin/stayin-core-db 1.0.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +24 -4
- package/prisma/{schema/client → client}/edge.js +6 -6
- package/prisma/{schema/client → client}/index.js +10 -10
- package/prisma/{schema/client → client}/package.json +1 -1
- package/prisma/{schema/client → client}/schema.prisma +1 -1
- package/prisma/{schema/client → client}/wasm.js +6 -6
- package/prisma/schema/flat.prisma +0 -216
- package/prisma/schema/migrations/20250407144650_07_04_2025_init_schema_migration/migration.sql +0 -1151
- package/prisma/schema/migrations/20250413075447_13_04_25_convert_flatlead_enums_to_arrays/migration.sql +0 -24
- package/prisma/schema/migrations/20250413111229_13_04_2025_dropped_budget_in_flat_requirements/migration.sql +0 -8
- package/prisma/schema/migrations/20250413190101_14_04_25_query_optional_property_code_added/migration.sql +0 -2
- package/prisma/schema/migrations/20250414085942_14_04_25_added_password_created_flag/migration.sql +0 -3
- package/prisma/schema/migrations/20250501112646_01_05_25_added_additional_properties_for_flat/migration.sql +0 -20
- package/prisma/schema/migrations/20250529071508_29_05_25_convert_preferred_tenant_type_to_array/migration.sql +0 -24
- package/prisma/schema/migrations/20250530103434_30_05_25_added_cta_options_to_flat_properties/migration.sql +0 -12
- package/prisma/schema/migrations/20250530113442_30_05_25_renamed_whatsapp_link_to_whatsapp_number/migration.sql +0 -9
- package/prisma/schema/migrations/20250613173143_13_06_25_added_event_tracking_for_real_estate_properties/migration.sql +0 -25
- package/prisma/schema/migrations/migration_lock.toml +0 -3
- package/prisma/schema/owner.prisma +0 -13
- package/prisma/schema/pg.prisma +0 -200
- package/prisma/schema/real_estate.prisma +0 -536
- package/prisma/schema/schema.prisma +0 -399
- /package/prisma/{schema/client → client}/client.d.ts +0 -0
- /package/prisma/{schema/client → client}/client.js +0 -0
- /package/prisma/{schema/client → client}/default.d.ts +0 -0
- /package/prisma/{schema/client → client}/default.js +0 -0
- /package/prisma/{schema/client → client}/edge.d.ts +0 -0
- /package/prisma/{schema/client → client}/index-browser.js +0 -0
- /package/prisma/{schema/client → client}/index.d.ts +0 -0
- /package/prisma/{schema/client → client}/libquery_engine-darwin-arm64.dylib.node +0 -0
- /package/prisma/{schema/client → client}/query_engine_bg.js +0 -0
- /package/prisma/{schema/client → client}/query_engine_bg.wasm +0 -0
- /package/prisma/{schema/client → client}/runtime/edge-esm.js +0 -0
- /package/prisma/{schema/client → client}/runtime/edge.js +0 -0
- /package/prisma/{schema/client → client}/runtime/index-browser.d.ts +0 -0
- /package/prisma/{schema/client → client}/runtime/index-browser.js +0 -0
- /package/prisma/{schema/client → client}/runtime/library.d.ts +0 -0
- /package/prisma/{schema/client → client}/runtime/library.js +0 -0
- /package/prisma/{schema/client → client}/runtime/react-native.js +0 -0
- /package/prisma/{schema/client → client}/runtime/wasm-compiler-edge.js +0 -0
- /package/prisma/{schema/client → client}/runtime/wasm-engine-edge.js +0 -0
- /package/prisma/{schema/client → client}/wasm-edge-light-loader.mjs +0 -0
- /package/prisma/{schema/client → client}/wasm-worker-loader.mjs +0 -0
- /package/prisma/{schema/client → client}/wasm.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,16 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stayin/stayin-core-db",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Shared Prisma schema & client for Core DB",
|
|
5
5
|
"main": "prisma/client/index.js",
|
|
6
6
|
"types": "prisma/client/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./prisma/client/index.js",
|
|
10
|
+
"require": "./prisma/client/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
7
13
|
"scripts": {
|
|
8
14
|
"generate": "prisma generate",
|
|
9
|
-
"migrate:deploy": "prisma migrate deploy"
|
|
15
|
+
"migrate:deploy": "prisma migrate deploy",
|
|
16
|
+
"prisma:format": "prisma format",
|
|
17
|
+
"prisma:generate": "prisma generate",
|
|
18
|
+
"prisma:deploy": "prisma migrate deploy",
|
|
19
|
+
"prisma:migrate": "prisma migrate dev",
|
|
20
|
+
"prisma:reset": "prisma migrate reset",
|
|
21
|
+
"prisma:studio": "prisma studio",
|
|
22
|
+
"prisma:push": "prisma db push",
|
|
23
|
+
"prisma:deploy:reset": "yarn prisma:reset && yarn prisma:deploy",
|
|
24
|
+
"prisma:dev:deploy": "prisma migrate deploy",
|
|
25
|
+
"prisma:dev:migrate": "prisma migrate dev --create-only",
|
|
26
|
+
"prisma:seed": "ts-node prisma/seed.ts",
|
|
27
|
+
"db:dev:rm": "docker compose rm stayin -s -f",
|
|
28
|
+
"db:dev:up": "docker compose up stayin -d",
|
|
29
|
+
"db:dev:restart": "yarn db:dev:rm && yarn db:dev:up && sleep 1 && yarn prisma:deploy",
|
|
30
|
+
"prepare": "prisma generate"
|
|
10
31
|
},
|
|
11
32
|
"files": [
|
|
12
|
-
"
|
|
13
|
-
"prisma"
|
|
33
|
+
"prisma/client"
|
|
14
34
|
],
|
|
15
35
|
"dependencies": {
|
|
16
36
|
"@prisma/client": "^6.10.1"
|
|
@@ -1246,7 +1246,7 @@ const config = {
|
|
|
1246
1246
|
"value": "prisma-client-js"
|
|
1247
1247
|
},
|
|
1248
1248
|
"output": {
|
|
1249
|
-
"value": "/Users/zahidkhan/Desktop/Other/Stayin/FullCode/STAYIN_CORE_DB/prisma/
|
|
1249
|
+
"value": "/Users/zahidkhan/Desktop/Other/Stayin/FullCode/STAYIN_CORE_DB/prisma/client",
|
|
1250
1250
|
"fromEnvVar": null
|
|
1251
1251
|
},
|
|
1252
1252
|
"config": {
|
|
@@ -1268,10 +1268,10 @@ const config = {
|
|
|
1268
1268
|
"isCustomOutput": true
|
|
1269
1269
|
},
|
|
1270
1270
|
"relativeEnvPaths": {
|
|
1271
|
-
"rootEnvPath":
|
|
1272
|
-
"schemaEnvPath": "
|
|
1271
|
+
"rootEnvPath": null,
|
|
1272
|
+
"schemaEnvPath": "../../.env"
|
|
1273
1273
|
},
|
|
1274
|
-
"relativePath": "
|
|
1274
|
+
"relativePath": "../schema",
|
|
1275
1275
|
"clientVersion": "6.10.1",
|
|
1276
1276
|
"engineVersion": "9b628578b3b7cae625e8c927178f15a170e74a9c",
|
|
1277
1277
|
"datasourceNames": [
|
|
@@ -1287,8 +1287,8 @@ const config = {
|
|
|
1287
1287
|
}
|
|
1288
1288
|
}
|
|
1289
1289
|
},
|
|
1290
|
-
"inlineSchema": "/// *\n/// * Flat\n/// * Represents a flat property.\nmodel Flat {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n rent Int\n deposit Int\n areaId Int\n address String\n landmark String?\n googleMapsURL String?\n lat Float?\n lng Float?\n furnishType FlatFurnishType\n bhkType FlatBHKType\n propertyType FlatPropertyType @default(STAND_ALONE_APARTMENT)\n amenities FlatAmenity[]\n availableOn DateTime?\n priority FlatPriority?\n status RealEstatePropertyStatus @default(AVAILABLE)\n isPublic Boolean @default(false)\n thumbnailImage String?\n pmType FlatPmType?\n pmName String?\n pmContactNumber String?\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n guideType FlatGuideType?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n ageOfProperty Int?\n balconyCount Int?\n bathroomCount Int?\n carpetArea Float?\n coveredParking Int?\n facing FlatFacingDirection?\n flatNumber String?\n floorNumber Int?\n lockInPeriodInDays Int?\n maintenanceCharges Float?\n maintenanceChargesIncluded Boolean @default(false)\n openParking Int?\n paintingCharges String?\n parkingCharges String?\n petFriendly Boolean? @default(false)\n totalFloors Int?\n preferredTenantType FlatPreferredTenantType[]\n area RealEstateArea @relation(\"FlatToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"FlatToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToFlat\", fields: [teamGuideId], references: [id])\n variations FlatVariation[]\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToFlat\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToFlat\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToFlat\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewFlats\")\n propertyEvents RealEstatePropertyEvent[] @relation(\"FlatToPropertyEvent\")\n ctaType FlatCtaType @default(SCHEDULE_VISIT)\n ctaPhoneNumber String?\n ctaWhatsappNumber String?\n ctaCustomLink String?\n ctaButtonTitle String?\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"flat\")\n}\n\n/// *\n/// * FlatVariation\n/// * Represents variations of a flat property.\nmodel FlatVariation {\n id Int @id @default(autoincrement())\n flatId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n flat Flat @relation(fields: [flatId], references: [id], onDelete: Cascade)\n\n @@schema(\"flat\")\n}\n\nenum FlatBHKType {\n ONE_RK\n ONE_BHK\n TWO_BHK\n THREE_BHK\n FOUR_BHK\n ONE_RB\n\n @@schema(\"flat\")\n}\n\nenum FlatFurnishType {\n UNFURNISHED\n SEMI_FURNISHED\n FULLY_FURNISHED\n\n @@schema(\"flat\")\n}\n\nenum FlatPriority {\n HIGH\n LOW\n CRITICAL\n MEDIUM\n\n @@schema(\"flat\")\n}\n\nenum FlatPreferredTenantType {\n ANYONE\n FAMILY\n BACHELOR\n STUDENT\n WORKING\n COUPLE\n\n @@schema(\"flat\")\n}\n\nenum FlatPropertyType {\n STAND_ALONE_APARTMENT\n INDIVIDUAL_HOUSE\n GATED_SOCIETY\n SHARED_APARTMENT\n CONDO\n STUDIO_APARTMENT\n\n @@schema(\"flat\")\n}\n\nenum FlatAmenity {\n TWO_WHEELER_PARKING\n FOUR_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"flat\")\n}\n\nenum FlatPmType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatGuideType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatFacingDirection {\n NORTH\n EAST\n WEST\n SOUTH\n\n @@schema(\"flat\")\n}\n\nenum FlatCtaType {\n CALL\n SCHEDULE_VISIT\n CUSTOM_LINK\n WHATSAPP\n\n @@schema(\"flat\")\n}\n\n/// *\n/// * OwnerBusiness\n/// * Represents the association between a business and its owner.\nmodel OwnerBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n ownerUserId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n ownerUser CoreUser @relation(\"OwnerBusinessOwner\", fields: [ownerUserId], references: [id], onDelete: Cascade)\n\n @@schema(\"owner\")\n}\n\n/// *\n/// * PgProperty\n/// * Represents a PG property.\nmodel PgProperty {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n status RealEstatePropertyStatus @default(AVAILABLE)\n areaId Int\n address String\n landmark String?\n exactLocation String?\n googleMapsURL String?\n lat Float?\n lng Float?\n pgPreferredTenantType PgPreferredTenant\n professionPreference String?\n lockInPeriod PgLockInPeriod?\n noticePeriod PgNoticePeriod?\n pgRules PgRules[]\n foodProvided PgFoodProvided[]\n vegOrNonVeg PgFoodType\n foodPricing String?\n foodMenu String?\n otherServices PgOtherService[]\n commonAreaAmenities PgAmenity[]\n roomAmenities PgAmenity[]\n additionalAmenities String?\n isPublic Boolean @default(false)\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea @relation(\"PgPropertyToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"PgPropertyToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToPgProperty\", fields: [teamGuideId], references: [id])\n pgSharingOptions PgSharingOption[] @relation(\"PgSharingOptionToPgProperty\")\n variations PgVariation[]\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToPgProperty\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToPgProperty\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToPgProperty\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgVariation\n/// * Represents variations of a PG property.\nmodel PgVariation {\n id Int @id @default(autoincrement())\n pgId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgSharingOption\n/// * Represents sharing options for a PG property.\nmodel PgSharingOption {\n id Int @id @default(autoincrement())\n pgId Int\n sharingType PgSharingType\n rent Int\n deposit Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(\"PgSharingOptionToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\nenum PgPreferredTenant {\n MALE\n FEMALE\n ANYONE\n\n @@schema(\"pg\")\n}\n\nenum PgAmenity {\n FOUR_WHEELER_PARKING\n TWO_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"pg\")\n}\n\nenum PgSharingType {\n SINGLE_SHARING\n DOUBLE_SHARING\n TRIPLE_SHARING\n FOUR_SHARING\n\n @@schema(\"pg\")\n}\n\nenum PgLockInPeriod {\n ONE_MONTH\n TWO_MONTHS\n THREE_MONTHS\n FOUR_MONTHS\n FIVE_MONTHS\n SIX_MONTHS\n ONE_YEAR\n\n @@schema(\"pg\")\n}\n\nenum PgNoticePeriod {\n DAYS_15\n DAYS_30\n DAYS_60\n\n @@schema(\"pg\")\n}\n\nenum PgRules {\n NO_SMOKING\n NO_ALCOHOL\n NO_MALE_ENTRY\n GATE_CLOSES_AT_NIGHT\n NO_FEMALE_ENTRY\n NO_GUARDIANS_ALLOWED\n NO_RULES\n VEG_ONLY\n NO_VISITORS_OPPOSITE_GENDER\n CURFEW_TIME\n\n @@schema(\"pg\")\n}\n\nenum PgFoodProvided {\n NO_FOOD_PROVIDED\n BREAKFAST\n LUNCH\n DINNER\n EVENING_SNACKS\n\n @@schema(\"pg\")\n}\n\nenum PgFoodType {\n VEG\n NON_VEG\n BOTH\n\n @@schema(\"pg\")\n}\n\nenum PgOtherService {\n LAUNDRY\n WARDEN_FACILITY\n ROOM_CLEANING\n NONE\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * RealEstateQuery\n/// * Now links directly to a business-specific lead.\nmodel RealEstateQuery {\n id Int @id @default(autoincrement())\n queryType String\n queryDesc String\n status RealEstateQueryStatus @default(NEW)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUserId Int\n realEstateBizId Int\n realEstateLeadId Int\n propertyCode String?\n coreUser CoreUser @relation(fields: [coreUserId], references: [id], onDelete: Cascade)\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateLead RealEstateLead @relation(\"RealEstateQueryToRealEstateLead\", fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateNote\nmodel RealEstateNote {\n id Int @id @default(autoincrement())\n noteType RealEstateNoteType\n noteContent String\n realEstateBusinessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToRealEstateNotes\", fields: [realEstateBusinessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFavorite\nmodel RealEstateFavorite {\n id Int @id @default(autoincrement())\n coreFavoriteId Int @unique\n favoriteFlats Int[]\n favoritePgs Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreFavorite CoreFavorite @relation(fields: [coreFavoriteId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateCoreLead\n/// * Represents a core lead with only shared profile details.\nmodel RealEstateCoreLead {\n id Int @id @default(autoincrement())\n coreUserId Int? @unique\n name String?\n phoneNumber String? @unique\n email String? @unique\n gender CoreGender?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUser CoreUser? @relation(\"RealEstateCoreLeadToCoreUser\", fields: [coreUserId], references: [id])\n flatCoreRequirements RealEstateFlatCoreLead?\n realEstateLeads RealEstateLead[]\n pgCoreRequirements RealEstatePGCoreLead?\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for flat-specific requirements.\nmodel RealEstateFlatCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for PG-specific requirements.\nmodel RealEstatePGCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusiness\n/// * Represents a real estate business entity.\nmodel RealEstateBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n category RealEstateCategory\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatProperty Flat[] @relation(\"FlatToRealEstateBusiness\")\n pgProperty PgProperty[] @relation(\"PgPropertyToRealEstateBusiness\")\n business CoreBusiness @relation(\"CoreBusinessToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n businessAnalytics RealEstateBusinessAnalytics? @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\")\n leads RealEstateLead[]\n notes RealEstateNote[] @relation(\"BusinessToRealEstateNotes\")\n RealEstateProfileCustomView RealEstateProfileCustomView[]\n propertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusiness\")\n realEstateQueries RealEstateQuery[]\n visits RealEstateVisit[]\n areas RealEstateArea[] @relation(\"RealEstateAreaToBusiness\")\n customCtaEnabled Boolean @default(false)\n propertyEvents RealEstatePropertyEvent[] @relation(\"BusinessToPropertyEvent\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessUser\n/// * Represents a user within a real estate business.\nmodel RealEstateBusinessUser {\n id Int @id @default(autoincrement())\n coreBusinessUserId Int @unique\n rePermissions RealEstatePermission[] @default([])\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n guidingFlats Flat[] @relation(\"TeamGuideToFlat\")\n guidingPgProperties PgProperty[] @relation(\"TeamGuideToPgProperty\")\n coreBusinessUser CoreBusinessUser @relation(\"RealEstateBusinessUserToCoreBusinessUser\", fields: [coreBusinessUserId], references: [id], onDelete: Cascade)\n assignedLeads RealEstateLead[] @relation(\"RealEstateLeadToRealEstateBusinessUser\")\n realEstateLeadConversions RealEstateLeadConversion[] @relation(\"ConversionToBusinessUser\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateArea\n/// * Extends CoreArea with real estate–specific fields.\nmodel RealEstateArea {\n id Int @id @default(autoincrement())\n coreAreaId Int @unique\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flats Flat[] @relation(\"FlatToRealEstateArea\")\n pgProperties PgProperty[] @relation(\"PgPropertyToRealEstateArea\")\n coreArea CoreArea @relation(\"CoreAreaToRealEstateArea\", fields: [coreAreaId], references: [id], onDelete: Cascade)\n propertyViews RealEstatePropertyView[]\n realEstateBusinesses RealEstateBusiness[] @relation(\"RealEstateAreaToBusiness\")\n realEstateLeads RealEstateLead[] @relation(\"RealEstateLeadAreas\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLead\n/// * Represents a business-specific lead.\nmodel RealEstateLead {\n id Int @id @default(autoincrement())\n name String\n phoneNumber String?\n email String?\n countryCode CoreAllowedCountryCode @default(IN)\n gender CoreGender?\n status RealEstateLeadStatus\n leadType RealEstateLeadType?\n preferredCallTime RealEstatePreferredCallTime?\n moveInDate DateTime?\n budgetStart Int?\n budgetEnd Int?\n notes String?\n realEstateCoreLeadId Int\n realEstateBizId Int\n assignedToId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatLead RealEstateFlatLead?\n pgLead RealEstatePGLead?\n assignedTo RealEstateBusinessUser? @relation(\"RealEstateLeadToRealEstateBusinessUser\", fields: [assignedToId], references: [id])\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n leadConversions RealEstateLeadConversion[] @relation(\"RealEstateLeadConversionToRealEstateLead\")\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\")\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToRealEstateLead\")\n queries RealEstateQuery[] @relation(\"RealEstateQueryToRealEstateLead\")\n visits RealEstateVisit[] @relation(\"RealEstateVisitToRealEstateLead\")\n areas RealEstateArea[] @relation(\"RealEstateLeadAreas\")\n\n @@unique([realEstateBizId, phoneNumber])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisit\n/// * Represents a visit associated with a real estate lead.\nmodel RealEstateVisit {\n id Int @id @default(autoincrement())\n leadId Int\n realEstateBizId Int\n propertyCode String\n visitType RealEstateCategory?\n scheduledAt DateTime\n status RealEstateVisitStatus @default(SCHEDULED)\n notes String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateVisit\")\n lead RealEstateLead @relation(\"RealEstateVisitToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n visitAnalytics RealEstateVisitAnalytics[] @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisitAnalytics\n/// * Represents analytics data for a real estate visit.\nmodel RealEstateVisitAnalytics {\n id Int @id @default(autoincrement())\n visitId Int\n duration Int\n feedback String?\n rated Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n visit RealEstateVisit @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\", fields: [visitId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadConversion\n/// * Represents the conversion of a lead.\nmodel RealEstateLeadConversion {\n id Int @id @default(autoincrement())\n leadId Int\n convertedAt DateTime @default(now())\n convertedById Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n convertedBy RealEstateBusinessUser? @relation(\"ConversionToBusinessUser\", fields: [convertedById], references: [id])\n lead RealEstateLead @relation(\"RealEstateLeadConversionToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyView\n/// * Represents a view of a property in real estate.\nmodel RealEstatePropertyView {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n viewedAt DateTime @default(now())\n realEstateBizUserId Int?\n realEstateBizId Int\n areaId Int?\n visitId Int?\n flatId Int?\n pgId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea? @relation(fields: [areaId], references: [id])\n flat Flat? @relation(\"RealEstatePropertyViewToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyViewToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyViewToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\", fields: [realEstateBizUserId], references: [id])\n visit RealEstateVisit? @relation(\"RealEstatePropertyViewToRealEstateVisit\", fields: [visitId], references: [id])\n\n @@index([realEstateBizId, propertyType, viewedAt])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessAnalytics\n/// * Represents analytics data for a real estate business.\nmodel RealEstateBusinessAnalytics {\n id Int @id @default(autoincrement())\n businessId Int @unique\n totalLeads Int @default(0)\n totalVisits Int @default(0)\n totalPropertyViews Int @default(0)\n monthlyLeads Int @default(0)\n monthlyVisits Int @default(0)\n monthlyPropertyViews Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyAnalytics\n/// * Represents analytics data for a specific property.\nmodel RealEstatePropertyAnalytics {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n realEstateBizId Int\n totalViews Int @default(0)\n uniqueViews Int @default(0)\n averageViewDuration Float @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatId Int?\n pgId Int?\n flat Flat? @relation(\"RealEstatePropertyAnalyticsToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyAnalyticsToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnFlats\n/// * Join table for M:N relationship between RealEstateLead and Flat.\nmodel RealEstateLeadsOnFlats {\n leadId Int\n flatId Int\n flat Flat @relation(\"RealEstateLeadsOnFlatsToFlat\", fields: [flatId], references: [id], onDelete: Cascade)\n lead RealEstateLead @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@id([leadId, flatId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnPgs\n/// * Join table for M:N relationship between RealEstateLead and PgProperty.\nmodel RealEstateLeadsOnPgs {\n leadId Int\n pgId Int\n lead RealEstateLead @relation(\"RealEstateLeadsOnPgsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n pg PgProperty @relation(\"RealEstateLeadsOnPgsToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@id([leadId, pgId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatLead\n/// * Represents a flat-specific lead extension.\nmodel RealEstateFlatLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n area CoreArea[] @relation(\"CoreAreaToRealEstateFlatLead\")\n\n @@map(\"FlatLead\")\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGLead\n/// * Represents a PG-specific lead extension.\nmodel RealEstatePGLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n budget Int?\n areaId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area CoreArea? @relation(\"CoreAreaToRealEstatePgLead\", fields: [areaId], references: [id])\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@map(\"PGLead\")\n @@schema(\"real_estate\")\n}\n\nmodel RealEstateProfileCustomView {\n id Int @id @default(autoincrement())\n title String\n description String?\n businessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n business RealEstateBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n flats Flat[] @relation(\"RealEstateProfileCustomViewFlats\")\n pgs PgProperty[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyEvent\n/// * A log of every click/share/CTA action on a flat.\nmodel RealEstatePropertyEvent {\n id Int @id @default(autoincrement())\n flatId Int?\n realEstateBizId Int\n eventType PropertyEventType\n createdAt DateTime @default(now())\n\n /// Relations\n flat Flat? @relation(\"FlatToPropertyEvent\", fields: [flatId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToPropertyEvent\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@index([flatId])\n @@index([realEstateBizId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * PropertyEventType\n/// * All the different click/share event types we want to track.\nenum PropertyEventType {\n SHARE_CLICK\n VISIT_CLICK\n QUERY_CLICK\n CTA_CALL\n CTA_WHATSAPP\n CTA_CUSTOM_LINK\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePermission {\n VIEW_VISITS\n EDIT_VISITS\n CREATE_VISITS\n DELETE_VISITS\n ASSIGN_VISITS\n VIEW_PROPERTIES\n EDIT_PROPERTIES\n DELETE_PROPERTIES\n UPLOAD_PROPERTIES\n VIEW_PROPERTY_FLAT_OWNER_DETAILS\n VIEW_PROPERTY_FLAT_LOCATION\n VIEW_LEADS_FLAT_CONTACT_INFO\n MANAGE_PROPERTY_FLAT_OWNER_DETAILS\n MANAGE_PROPERTY_FLAT_LOCATION\n MANAGE_LEADS_FLAT_CONTACT_INFO\n VIEW_QUERIES\n EDIT_QUERIES\n DELETE_QUERIES\n CREATE_QUERIES\n MANAGE_QUERIES\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePreferredCallTime {\n MORNING\n AFTERNOON\n NIGHT\n EVENING\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyStatus {\n AVAILABLE\n NOT_AVAILABLE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateCategory {\n FLAT\n PG\n OWNER\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadStatus {\n NEW\n IN_CONTACT\n BOOKED\n VISITED\n CLOSED\n LOST\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadType {\n FLAT\n SALE\n OTHER\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateVisitStatus {\n SCHEDULED\n COMPLETED\n CANCELLED\n RESCHEDULED\n NO_SHOW\n RE_VISIT\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyType {\n FLAT\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateNoteType {\n RED_NOTE\n BLUE_NOTE\n GREEN_NOTE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateQueryStatus {\n NEW\n IN_PROGRESS\n RESOLVED\n REJECTED\n CLOSED\n\n @@schema(\"real_estate\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"driverAdapters\", \"fullTextSearchPostgres\", \"multiSchema\"]\n output = \"./client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n schemas = [\"core\", \"flat\", \"owner\", \"pg\", \"real_estate\"]\n}\n\n/// *\n/// * CoreUser\n/// * Represents a user in the system.\nmodel CoreUser {\n id Int @id @default(autoincrement())\n email String? @unique\n hash String?\n firstName String\n lastName String?\n countryCode CoreAllowedCountryCode @default(IN)\n phoneNumber String? @unique\n googleId String? @unique\n isActive Boolean @default(true)\n gender CoreGender?\n dateOfBirth DateTime?\n profilePicture String?\n resetToken String?\n resetTokenExpiry DateTime?\n authProvider CoreAuthenticationProvider @default(EMAIL)\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n passwordCreated Boolean @default(false)\n authoredLogs CoreBusinessLog[]\n authoredUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n uploadedDocs CoreDocument[] @relation(\"DocumentUser\")\n favorite CoreFavorite?\n invitesSent CoreInvite[] @relation(\"UserInvites\")\n posts CorePost[]\n refreshTokens CoreRefreshToken[]\n searchHistories CoreSearchHistory[]\n ownerBusinesses OwnerBusiness[] @relation(\"OwnerBusinessOwner\")\n realEstateCoreAsLeads RealEstateCoreLead? @relation(\"RealEstateCoreLeadToCoreUser\")\n realEstateQueries RealEstateQuery[]\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreFavorite\n/// * Represents a user's favorite businesses.\nmodel CoreFavorite {\n id Int @id @default(autoincrement())\n userId Int @unique\n favoriteBusinesses Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateFavorite RealEstateFavorite?\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusiness\n/// * Represents a business entity.\nmodel CoreBusiness {\n id Int @id @default(autoincrement())\n businessName String\n username String? @unique\n instagramHandle String?\n bio String?\n logoUrl String?\n manyChatId String?\n businessAddress String?\n businessContactNumber String?\n businessContactNumberCountryCode CoreAllowedCountryCode @default(IN)\n businessWebsite String?\n city CoreCity\n businessCategory CoreBusinessCategory\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n customLinks Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n deletedAt DateTime?\n isActive Boolean @default(true)\n businessLogs CoreBusinessLog[]\n businessUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n documents CoreDocument[]\n instagramAccount CoreInstagramAccount?\n invites CoreInvite[]\n payments CorePayment[]\n posts CorePost[]\n subscriptions CoreSubscription[]\n realEstateBusiness RealEstateBusiness? @relation(\"CoreBusinessToRealEstateBusiness\")\n areas CoreArea[] @relation(\"CoreBusinessToCoreArea\")\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUser\n/// * Represents the association between users and businesses.\nmodel CoreBusinessUser {\n id Int @id @default(autoincrement())\n userId Int\n businessId Int\n roleInBusiness CoreOrganizationRole @default(STAFF)\n permissions CorePermission[] @default([])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstateBusinessUserToCoreBusinessUser\")\n\n @@unique([userId, businessId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInvite\n/// * Represents an invitation to join a business.\nmodel CoreInvite {\n id Int @id @default(autoincrement())\n businessId Int\n inviterId Int\n inviteeEmail String\n token String @unique\n expiresAt DateTime\n roleInBusiness CoreOrganizationRole\n permissions CorePermission[] @default([])\n businessPermissions Json?\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n inviter CoreUser @relation(\"UserInvites\", fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreRefreshToken\n/// * Represents a user's refresh token for authentication.\nmodel CoreRefreshToken {\n deviceId String @id\n deviceName String\n token String\n expiresAt DateTime\n userId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSubscription\n/// * Represents a business subscription.\nmodel CoreSubscription {\n id Int @id @default(autoincrement())\n businessId Int\n type CoreSubscriptionType @default(BASIC)\n startDate DateTime @default(now())\n endDate DateTime?\n isActive Boolean @default(true)\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePayment\n/// * Represents a payment made by a business.\nmodel CorePayment {\n id Int @id @default(autoincrement())\n businessId Int\n amount Int\n status CorePaymentStatus @default(PENDING)\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSearchHistory\n/// * Represents a user's search history.\nmodel CoreSearchHistory {\n id Int @id @default(autoincrement())\n userId Int\n query String\n searchedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId, searchedAt])\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePost\n/// * Represents a post made by a user within a business.\nmodel CorePost {\n id Int @id @default(autoincrement())\n businessId Int\n instagramPostId String?\n caption String?\n imageUrl String?\n createdAt DateTime @default(now())\n userId Int?\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInstagramAccount\n/// * Represents a business's Instagram account.\nmodel CoreInstagramAccount {\n id Int @id @default(autoincrement())\n businessId Int @unique\n instagramUserId String?\n accessToken String?\n connectedAt DateTime? @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreDocument\n/// * Represents documents uploaded by users or businesses.\nmodel CoreDocument {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int?\n docUrl String\n docName String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(\"DocumentUser\", fields: [userId], references: [id])\n\n @@index([businessId, entityType, entityId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessLog\n/// * Represents logs related to business actions.\nmodel CoreBusinessLog {\n id BigInt @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String?\n entityId Int?\n action String\n oldData Json?\n newData Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUpdate\n/// * Represents updates made to a business.\nmodel CoreBusinessUpdate {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int\n content String\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreArea\n/// * This model serves as the GLOBAL concept of an area.\nmodel CoreArea {\n id Int @id @default(autoincrement())\n name String\n city CoreCity\n lat Float?\n lng Float?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstatePgLeads RealEstatePGLead[] @relation(\"CoreAreaToRealEstatePgLead\")\n realEstateAreas RealEstateArea? @relation(\"CoreAreaToRealEstateArea\")\n realEstateFlatLeads RealEstateFlatLead[] @relation(\"CoreAreaToRealEstateFlatLead\")\n businesses CoreBusiness[] @relation(\"CoreBusinessToCoreArea\")\n\n @@unique([name, city])\n @@schema(\"core\")\n}\n\nenum CoreGender {\n MALE\n FEMALE\n OTHER\n\n @@schema(\"core\")\n}\n\nenum CoreAuthenticationProvider {\n GOOGLE\n EMAIL\n\n @@schema(\"core\")\n}\n\nenum CoreAllowedCountryCode {\n IN\n\n @@schema(\"core\")\n}\n\nenum CoreOrganizationRole {\n OWNER\n ADMIN\n STAFF\n\n @@schema(\"core\")\n}\n\nenum CorePermission {\n VIEW_LOGS\n EDIT_LOGS\n DELETE_LOGS\n UNDO_CHANGES\n MANAGE_FINANCE\n VIEW_FINANCE\n CREATE_LEADS\n VIEW_LEADS\n EDIT_LEADS\n DELETE_LEADS\n MANAGE_BUSINESS\n CREATE_USERS\n EDIT_USERS\n VIEW_USERS\n DELETE_USERS\n ALL_PERMISSIONS\n\n @@schema(\"core\")\n}\n\nenum CorePaymentStatus {\n PENDING\n COMPLETED\n FAILED\n\n @@schema(\"core\")\n}\n\nenum CoreSubscriptionType {\n BASIC\n STANDARD\n PREMIUM\n\n @@schema(\"core\")\n}\n\nenum CoreCity {\n BANGALORE\n MUMBAI\n DELHI\n CHENNAI\n HYDERABAD\n\n @@schema(\"core\")\n}\n\nenum CoreBusinessCategory {\n REAL_ESTATE\n\n @@schema(\"core\")\n}\n",
|
|
1291
|
-
"inlineSchemaHash": "
|
|
1290
|
+
"inlineSchema": "/// *\n/// * Flat\n/// * Represents a flat property.\nmodel Flat {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n rent Int\n deposit Int\n areaId Int\n address String\n landmark String?\n googleMapsURL String?\n lat Float?\n lng Float?\n furnishType FlatFurnishType\n bhkType FlatBHKType\n propertyType FlatPropertyType @default(STAND_ALONE_APARTMENT)\n amenities FlatAmenity[]\n availableOn DateTime?\n priority FlatPriority?\n status RealEstatePropertyStatus @default(AVAILABLE)\n isPublic Boolean @default(false)\n thumbnailImage String?\n pmType FlatPmType?\n pmName String?\n pmContactNumber String?\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n guideType FlatGuideType?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n ageOfProperty Int?\n balconyCount Int?\n bathroomCount Int?\n carpetArea Float?\n coveredParking Int?\n facing FlatFacingDirection?\n flatNumber String?\n floorNumber Int?\n lockInPeriodInDays Int?\n maintenanceCharges Float?\n maintenanceChargesIncluded Boolean @default(false)\n openParking Int?\n paintingCharges String?\n parkingCharges String?\n petFriendly Boolean? @default(false)\n totalFloors Int?\n preferredTenantType FlatPreferredTenantType[]\n area RealEstateArea @relation(\"FlatToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"FlatToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToFlat\", fields: [teamGuideId], references: [id])\n variations FlatVariation[]\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToFlat\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToFlat\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToFlat\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewFlats\")\n propertyEvents RealEstatePropertyEvent[] @relation(\"FlatToPropertyEvent\")\n ctaType FlatCtaType @default(SCHEDULE_VISIT)\n ctaPhoneNumber String?\n ctaWhatsappNumber String?\n ctaCustomLink String?\n ctaButtonTitle String?\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"flat\")\n}\n\n/// *\n/// * FlatVariation\n/// * Represents variations of a flat property.\nmodel FlatVariation {\n id Int @id @default(autoincrement())\n flatId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n flat Flat @relation(fields: [flatId], references: [id], onDelete: Cascade)\n\n @@schema(\"flat\")\n}\n\nenum FlatBHKType {\n ONE_RK\n ONE_BHK\n TWO_BHK\n THREE_BHK\n FOUR_BHK\n ONE_RB\n\n @@schema(\"flat\")\n}\n\nenum FlatFurnishType {\n UNFURNISHED\n SEMI_FURNISHED\n FULLY_FURNISHED\n\n @@schema(\"flat\")\n}\n\nenum FlatPriority {\n HIGH\n LOW\n CRITICAL\n MEDIUM\n\n @@schema(\"flat\")\n}\n\nenum FlatPreferredTenantType {\n ANYONE\n FAMILY\n BACHELOR\n STUDENT\n WORKING\n COUPLE\n\n @@schema(\"flat\")\n}\n\nenum FlatPropertyType {\n STAND_ALONE_APARTMENT\n INDIVIDUAL_HOUSE\n GATED_SOCIETY\n SHARED_APARTMENT\n CONDO\n STUDIO_APARTMENT\n\n @@schema(\"flat\")\n}\n\nenum FlatAmenity {\n TWO_WHEELER_PARKING\n FOUR_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"flat\")\n}\n\nenum FlatPmType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatGuideType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatFacingDirection {\n NORTH\n EAST\n WEST\n SOUTH\n\n @@schema(\"flat\")\n}\n\nenum FlatCtaType {\n CALL\n SCHEDULE_VISIT\n CUSTOM_LINK\n WHATSAPP\n\n @@schema(\"flat\")\n}\n\n/// *\n/// * OwnerBusiness\n/// * Represents the association between a business and its owner.\nmodel OwnerBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n ownerUserId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n ownerUser CoreUser @relation(\"OwnerBusinessOwner\", fields: [ownerUserId], references: [id], onDelete: Cascade)\n\n @@schema(\"owner\")\n}\n\n/// *\n/// * PgProperty\n/// * Represents a PG property.\nmodel PgProperty {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n status RealEstatePropertyStatus @default(AVAILABLE)\n areaId Int\n address String\n landmark String?\n exactLocation String?\n googleMapsURL String?\n lat Float?\n lng Float?\n pgPreferredTenantType PgPreferredTenant\n professionPreference String?\n lockInPeriod PgLockInPeriod?\n noticePeriod PgNoticePeriod?\n pgRules PgRules[]\n foodProvided PgFoodProvided[]\n vegOrNonVeg PgFoodType\n foodPricing String?\n foodMenu String?\n otherServices PgOtherService[]\n commonAreaAmenities PgAmenity[]\n roomAmenities PgAmenity[]\n additionalAmenities String?\n isPublic Boolean @default(false)\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea @relation(\"PgPropertyToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"PgPropertyToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToPgProperty\", fields: [teamGuideId], references: [id])\n pgSharingOptions PgSharingOption[] @relation(\"PgSharingOptionToPgProperty\")\n variations PgVariation[]\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToPgProperty\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToPgProperty\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToPgProperty\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgVariation\n/// * Represents variations of a PG property.\nmodel PgVariation {\n id Int @id @default(autoincrement())\n pgId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgSharingOption\n/// * Represents sharing options for a PG property.\nmodel PgSharingOption {\n id Int @id @default(autoincrement())\n pgId Int\n sharingType PgSharingType\n rent Int\n deposit Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(\"PgSharingOptionToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\nenum PgPreferredTenant {\n MALE\n FEMALE\n ANYONE\n\n @@schema(\"pg\")\n}\n\nenum PgAmenity {\n FOUR_WHEELER_PARKING\n TWO_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"pg\")\n}\n\nenum PgSharingType {\n SINGLE_SHARING\n DOUBLE_SHARING\n TRIPLE_SHARING\n FOUR_SHARING\n\n @@schema(\"pg\")\n}\n\nenum PgLockInPeriod {\n ONE_MONTH\n TWO_MONTHS\n THREE_MONTHS\n FOUR_MONTHS\n FIVE_MONTHS\n SIX_MONTHS\n ONE_YEAR\n\n @@schema(\"pg\")\n}\n\nenum PgNoticePeriod {\n DAYS_15\n DAYS_30\n DAYS_60\n\n @@schema(\"pg\")\n}\n\nenum PgRules {\n NO_SMOKING\n NO_ALCOHOL\n NO_MALE_ENTRY\n GATE_CLOSES_AT_NIGHT\n NO_FEMALE_ENTRY\n NO_GUARDIANS_ALLOWED\n NO_RULES\n VEG_ONLY\n NO_VISITORS_OPPOSITE_GENDER\n CURFEW_TIME\n\n @@schema(\"pg\")\n}\n\nenum PgFoodProvided {\n NO_FOOD_PROVIDED\n BREAKFAST\n LUNCH\n DINNER\n EVENING_SNACKS\n\n @@schema(\"pg\")\n}\n\nenum PgFoodType {\n VEG\n NON_VEG\n BOTH\n\n @@schema(\"pg\")\n}\n\nenum PgOtherService {\n LAUNDRY\n WARDEN_FACILITY\n ROOM_CLEANING\n NONE\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * RealEstateQuery\n/// * Now links directly to a business-specific lead.\nmodel RealEstateQuery {\n id Int @id @default(autoincrement())\n queryType String\n queryDesc String\n status RealEstateQueryStatus @default(NEW)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUserId Int\n realEstateBizId Int\n realEstateLeadId Int\n propertyCode String?\n coreUser CoreUser @relation(fields: [coreUserId], references: [id], onDelete: Cascade)\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateLead RealEstateLead @relation(\"RealEstateQueryToRealEstateLead\", fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateNote\nmodel RealEstateNote {\n id Int @id @default(autoincrement())\n noteType RealEstateNoteType\n noteContent String\n realEstateBusinessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToRealEstateNotes\", fields: [realEstateBusinessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFavorite\nmodel RealEstateFavorite {\n id Int @id @default(autoincrement())\n coreFavoriteId Int @unique\n favoriteFlats Int[]\n favoritePgs Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreFavorite CoreFavorite @relation(fields: [coreFavoriteId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateCoreLead\n/// * Represents a core lead with only shared profile details.\nmodel RealEstateCoreLead {\n id Int @id @default(autoincrement())\n coreUserId Int? @unique\n name String?\n phoneNumber String? @unique\n email String? @unique\n gender CoreGender?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUser CoreUser? @relation(\"RealEstateCoreLeadToCoreUser\", fields: [coreUserId], references: [id])\n flatCoreRequirements RealEstateFlatCoreLead?\n realEstateLeads RealEstateLead[]\n pgCoreRequirements RealEstatePGCoreLead?\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for flat-specific requirements.\nmodel RealEstateFlatCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for PG-specific requirements.\nmodel RealEstatePGCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusiness\n/// * Represents a real estate business entity.\nmodel RealEstateBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n category RealEstateCategory\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatProperty Flat[] @relation(\"FlatToRealEstateBusiness\")\n pgProperty PgProperty[] @relation(\"PgPropertyToRealEstateBusiness\")\n business CoreBusiness @relation(\"CoreBusinessToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n businessAnalytics RealEstateBusinessAnalytics? @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\")\n leads RealEstateLead[]\n notes RealEstateNote[] @relation(\"BusinessToRealEstateNotes\")\n RealEstateProfileCustomView RealEstateProfileCustomView[]\n propertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusiness\")\n realEstateQueries RealEstateQuery[]\n visits RealEstateVisit[]\n areas RealEstateArea[] @relation(\"RealEstateAreaToBusiness\")\n customCtaEnabled Boolean @default(false)\n propertyEvents RealEstatePropertyEvent[] @relation(\"BusinessToPropertyEvent\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessUser\n/// * Represents a user within a real estate business.\nmodel RealEstateBusinessUser {\n id Int @id @default(autoincrement())\n coreBusinessUserId Int @unique\n rePermissions RealEstatePermission[] @default([])\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n guidingFlats Flat[] @relation(\"TeamGuideToFlat\")\n guidingPgProperties PgProperty[] @relation(\"TeamGuideToPgProperty\")\n coreBusinessUser CoreBusinessUser @relation(\"RealEstateBusinessUserToCoreBusinessUser\", fields: [coreBusinessUserId], references: [id], onDelete: Cascade)\n assignedLeads RealEstateLead[] @relation(\"RealEstateLeadToRealEstateBusinessUser\")\n realEstateLeadConversions RealEstateLeadConversion[] @relation(\"ConversionToBusinessUser\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateArea\n/// * Extends CoreArea with real estate–specific fields.\nmodel RealEstateArea {\n id Int @id @default(autoincrement())\n coreAreaId Int @unique\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flats Flat[] @relation(\"FlatToRealEstateArea\")\n pgProperties PgProperty[] @relation(\"PgPropertyToRealEstateArea\")\n coreArea CoreArea @relation(\"CoreAreaToRealEstateArea\", fields: [coreAreaId], references: [id], onDelete: Cascade)\n propertyViews RealEstatePropertyView[]\n realEstateBusinesses RealEstateBusiness[] @relation(\"RealEstateAreaToBusiness\")\n realEstateLeads RealEstateLead[] @relation(\"RealEstateLeadAreas\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLead\n/// * Represents a business-specific lead.\nmodel RealEstateLead {\n id Int @id @default(autoincrement())\n name String\n phoneNumber String?\n email String?\n countryCode CoreAllowedCountryCode @default(IN)\n gender CoreGender?\n status RealEstateLeadStatus\n leadType RealEstateLeadType?\n preferredCallTime RealEstatePreferredCallTime?\n moveInDate DateTime?\n budgetStart Int?\n budgetEnd Int?\n notes String?\n realEstateCoreLeadId Int\n realEstateBizId Int\n assignedToId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatLead RealEstateFlatLead?\n pgLead RealEstatePGLead?\n assignedTo RealEstateBusinessUser? @relation(\"RealEstateLeadToRealEstateBusinessUser\", fields: [assignedToId], references: [id])\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n leadConversions RealEstateLeadConversion[] @relation(\"RealEstateLeadConversionToRealEstateLead\")\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\")\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToRealEstateLead\")\n queries RealEstateQuery[] @relation(\"RealEstateQueryToRealEstateLead\")\n visits RealEstateVisit[] @relation(\"RealEstateVisitToRealEstateLead\")\n areas RealEstateArea[] @relation(\"RealEstateLeadAreas\")\n\n @@unique([realEstateBizId, phoneNumber])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisit\n/// * Represents a visit associated with a real estate lead.\nmodel RealEstateVisit {\n id Int @id @default(autoincrement())\n leadId Int\n realEstateBizId Int\n propertyCode String\n visitType RealEstateCategory?\n scheduledAt DateTime\n status RealEstateVisitStatus @default(SCHEDULED)\n notes String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateVisit\")\n lead RealEstateLead @relation(\"RealEstateVisitToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n visitAnalytics RealEstateVisitAnalytics[] @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisitAnalytics\n/// * Represents analytics data for a real estate visit.\nmodel RealEstateVisitAnalytics {\n id Int @id @default(autoincrement())\n visitId Int\n duration Int\n feedback String?\n rated Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n visit RealEstateVisit @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\", fields: [visitId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadConversion\n/// * Represents the conversion of a lead.\nmodel RealEstateLeadConversion {\n id Int @id @default(autoincrement())\n leadId Int\n convertedAt DateTime @default(now())\n convertedById Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n convertedBy RealEstateBusinessUser? @relation(\"ConversionToBusinessUser\", fields: [convertedById], references: [id])\n lead RealEstateLead @relation(\"RealEstateLeadConversionToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyView\n/// * Represents a view of a property in real estate.\nmodel RealEstatePropertyView {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n viewedAt DateTime @default(now())\n realEstateBizUserId Int?\n realEstateBizId Int\n areaId Int?\n visitId Int?\n flatId Int?\n pgId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea? @relation(fields: [areaId], references: [id])\n flat Flat? @relation(\"RealEstatePropertyViewToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyViewToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyViewToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\", fields: [realEstateBizUserId], references: [id])\n visit RealEstateVisit? @relation(\"RealEstatePropertyViewToRealEstateVisit\", fields: [visitId], references: [id])\n\n @@index([realEstateBizId, propertyType, viewedAt])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessAnalytics\n/// * Represents analytics data for a real estate business.\nmodel RealEstateBusinessAnalytics {\n id Int @id @default(autoincrement())\n businessId Int @unique\n totalLeads Int @default(0)\n totalVisits Int @default(0)\n totalPropertyViews Int @default(0)\n monthlyLeads Int @default(0)\n monthlyVisits Int @default(0)\n monthlyPropertyViews Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyAnalytics\n/// * Represents analytics data for a specific property.\nmodel RealEstatePropertyAnalytics {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n realEstateBizId Int\n totalViews Int @default(0)\n uniqueViews Int @default(0)\n averageViewDuration Float @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatId Int?\n pgId Int?\n flat Flat? @relation(\"RealEstatePropertyAnalyticsToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyAnalyticsToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnFlats\n/// * Join table for M:N relationship between RealEstateLead and Flat.\nmodel RealEstateLeadsOnFlats {\n leadId Int\n flatId Int\n flat Flat @relation(\"RealEstateLeadsOnFlatsToFlat\", fields: [flatId], references: [id], onDelete: Cascade)\n lead RealEstateLead @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@id([leadId, flatId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnPgs\n/// * Join table for M:N relationship between RealEstateLead and PgProperty.\nmodel RealEstateLeadsOnPgs {\n leadId Int\n pgId Int\n lead RealEstateLead @relation(\"RealEstateLeadsOnPgsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n pg PgProperty @relation(\"RealEstateLeadsOnPgsToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@id([leadId, pgId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatLead\n/// * Represents a flat-specific lead extension.\nmodel RealEstateFlatLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n area CoreArea[] @relation(\"CoreAreaToRealEstateFlatLead\")\n\n @@map(\"FlatLead\")\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGLead\n/// * Represents a PG-specific lead extension.\nmodel RealEstatePGLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n budget Int?\n areaId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area CoreArea? @relation(\"CoreAreaToRealEstatePgLead\", fields: [areaId], references: [id])\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@map(\"PGLead\")\n @@schema(\"real_estate\")\n}\n\nmodel RealEstateProfileCustomView {\n id Int @id @default(autoincrement())\n title String\n description String?\n businessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n business RealEstateBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n flats Flat[] @relation(\"RealEstateProfileCustomViewFlats\")\n pgs PgProperty[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyEvent\n/// * A log of every click/share/CTA action on a flat.\nmodel RealEstatePropertyEvent {\n id Int @id @default(autoincrement())\n flatId Int?\n realEstateBizId Int\n eventType PropertyEventType\n createdAt DateTime @default(now())\n\n /// Relations\n flat Flat? @relation(\"FlatToPropertyEvent\", fields: [flatId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToPropertyEvent\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@index([flatId])\n @@index([realEstateBizId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * PropertyEventType\n/// * All the different click/share event types we want to track.\nenum PropertyEventType {\n SHARE_CLICK\n VISIT_CLICK\n QUERY_CLICK\n CTA_CALL\n CTA_WHATSAPP\n CTA_CUSTOM_LINK\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePermission {\n VIEW_VISITS\n EDIT_VISITS\n CREATE_VISITS\n DELETE_VISITS\n ASSIGN_VISITS\n VIEW_PROPERTIES\n EDIT_PROPERTIES\n DELETE_PROPERTIES\n UPLOAD_PROPERTIES\n VIEW_PROPERTY_FLAT_OWNER_DETAILS\n VIEW_PROPERTY_FLAT_LOCATION\n VIEW_LEADS_FLAT_CONTACT_INFO\n MANAGE_PROPERTY_FLAT_OWNER_DETAILS\n MANAGE_PROPERTY_FLAT_LOCATION\n MANAGE_LEADS_FLAT_CONTACT_INFO\n VIEW_QUERIES\n EDIT_QUERIES\n DELETE_QUERIES\n CREATE_QUERIES\n MANAGE_QUERIES\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePreferredCallTime {\n MORNING\n AFTERNOON\n NIGHT\n EVENING\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyStatus {\n AVAILABLE\n NOT_AVAILABLE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateCategory {\n FLAT\n PG\n OWNER\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadStatus {\n NEW\n IN_CONTACT\n BOOKED\n VISITED\n CLOSED\n LOST\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadType {\n FLAT\n SALE\n OTHER\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateVisitStatus {\n SCHEDULED\n COMPLETED\n CANCELLED\n RESCHEDULED\n NO_SHOW\n RE_VISIT\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyType {\n FLAT\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateNoteType {\n RED_NOTE\n BLUE_NOTE\n GREEN_NOTE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateQueryStatus {\n NEW\n IN_PROGRESS\n RESOLVED\n REJECTED\n CLOSED\n\n @@schema(\"real_estate\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"driverAdapters\", \"fullTextSearchPostgres\", \"multiSchema\"]\n output = \"../client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n schemas = [\"core\", \"flat\", \"owner\", \"pg\", \"real_estate\"]\n}\n\n/// *\n/// * CoreUser\n/// * Represents a user in the system.\nmodel CoreUser {\n id Int @id @default(autoincrement())\n email String? @unique\n hash String?\n firstName String\n lastName String?\n countryCode CoreAllowedCountryCode @default(IN)\n phoneNumber String? @unique\n googleId String? @unique\n isActive Boolean @default(true)\n gender CoreGender?\n dateOfBirth DateTime?\n profilePicture String?\n resetToken String?\n resetTokenExpiry DateTime?\n authProvider CoreAuthenticationProvider @default(EMAIL)\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n passwordCreated Boolean @default(false)\n authoredLogs CoreBusinessLog[]\n authoredUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n uploadedDocs CoreDocument[] @relation(\"DocumentUser\")\n favorite CoreFavorite?\n invitesSent CoreInvite[] @relation(\"UserInvites\")\n posts CorePost[]\n refreshTokens CoreRefreshToken[]\n searchHistories CoreSearchHistory[]\n ownerBusinesses OwnerBusiness[] @relation(\"OwnerBusinessOwner\")\n realEstateCoreAsLeads RealEstateCoreLead? @relation(\"RealEstateCoreLeadToCoreUser\")\n realEstateQueries RealEstateQuery[]\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreFavorite\n/// * Represents a user's favorite businesses.\nmodel CoreFavorite {\n id Int @id @default(autoincrement())\n userId Int @unique\n favoriteBusinesses Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateFavorite RealEstateFavorite?\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusiness\n/// * Represents a business entity.\nmodel CoreBusiness {\n id Int @id @default(autoincrement())\n businessName String\n username String? @unique\n instagramHandle String?\n bio String?\n logoUrl String?\n manyChatId String?\n businessAddress String?\n businessContactNumber String?\n businessContactNumberCountryCode CoreAllowedCountryCode @default(IN)\n businessWebsite String?\n city CoreCity\n businessCategory CoreBusinessCategory\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n customLinks Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n deletedAt DateTime?\n isActive Boolean @default(true)\n businessLogs CoreBusinessLog[]\n businessUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n documents CoreDocument[]\n instagramAccount CoreInstagramAccount?\n invites CoreInvite[]\n payments CorePayment[]\n posts CorePost[]\n subscriptions CoreSubscription[]\n realEstateBusiness RealEstateBusiness? @relation(\"CoreBusinessToRealEstateBusiness\")\n areas CoreArea[] @relation(\"CoreBusinessToCoreArea\")\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUser\n/// * Represents the association between users and businesses.\nmodel CoreBusinessUser {\n id Int @id @default(autoincrement())\n userId Int\n businessId Int\n roleInBusiness CoreOrganizationRole @default(STAFF)\n permissions CorePermission[] @default([])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstateBusinessUserToCoreBusinessUser\")\n\n @@unique([userId, businessId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInvite\n/// * Represents an invitation to join a business.\nmodel CoreInvite {\n id Int @id @default(autoincrement())\n businessId Int\n inviterId Int\n inviteeEmail String\n token String @unique\n expiresAt DateTime\n roleInBusiness CoreOrganizationRole\n permissions CorePermission[] @default([])\n businessPermissions Json?\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n inviter CoreUser @relation(\"UserInvites\", fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreRefreshToken\n/// * Represents a user's refresh token for authentication.\nmodel CoreRefreshToken {\n deviceId String @id\n deviceName String\n token String\n expiresAt DateTime\n userId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSubscription\n/// * Represents a business subscription.\nmodel CoreSubscription {\n id Int @id @default(autoincrement())\n businessId Int\n type CoreSubscriptionType @default(BASIC)\n startDate DateTime @default(now())\n endDate DateTime?\n isActive Boolean @default(true)\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePayment\n/// * Represents a payment made by a business.\nmodel CorePayment {\n id Int @id @default(autoincrement())\n businessId Int\n amount Int\n status CorePaymentStatus @default(PENDING)\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSearchHistory\n/// * Represents a user's search history.\nmodel CoreSearchHistory {\n id Int @id @default(autoincrement())\n userId Int\n query String\n searchedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId, searchedAt])\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePost\n/// * Represents a post made by a user within a business.\nmodel CorePost {\n id Int @id @default(autoincrement())\n businessId Int\n instagramPostId String?\n caption String?\n imageUrl String?\n createdAt DateTime @default(now())\n userId Int?\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInstagramAccount\n/// * Represents a business's Instagram account.\nmodel CoreInstagramAccount {\n id Int @id @default(autoincrement())\n businessId Int @unique\n instagramUserId String?\n accessToken String?\n connectedAt DateTime? @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreDocument\n/// * Represents documents uploaded by users or businesses.\nmodel CoreDocument {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int?\n docUrl String\n docName String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(\"DocumentUser\", fields: [userId], references: [id])\n\n @@index([businessId, entityType, entityId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessLog\n/// * Represents logs related to business actions.\nmodel CoreBusinessLog {\n id BigInt @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String?\n entityId Int?\n action String\n oldData Json?\n newData Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUpdate\n/// * Represents updates made to a business.\nmodel CoreBusinessUpdate {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int\n content String\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreArea\n/// * This model serves as the GLOBAL concept of an area.\nmodel CoreArea {\n id Int @id @default(autoincrement())\n name String\n city CoreCity\n lat Float?\n lng Float?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstatePgLeads RealEstatePGLead[] @relation(\"CoreAreaToRealEstatePgLead\")\n realEstateAreas RealEstateArea? @relation(\"CoreAreaToRealEstateArea\")\n realEstateFlatLeads RealEstateFlatLead[] @relation(\"CoreAreaToRealEstateFlatLead\")\n businesses CoreBusiness[] @relation(\"CoreBusinessToCoreArea\")\n\n @@unique([name, city])\n @@schema(\"core\")\n}\n\nenum CoreGender {\n MALE\n FEMALE\n OTHER\n\n @@schema(\"core\")\n}\n\nenum CoreAuthenticationProvider {\n GOOGLE\n EMAIL\n\n @@schema(\"core\")\n}\n\nenum CoreAllowedCountryCode {\n IN\n\n @@schema(\"core\")\n}\n\nenum CoreOrganizationRole {\n OWNER\n ADMIN\n STAFF\n\n @@schema(\"core\")\n}\n\nenum CorePermission {\n VIEW_LOGS\n EDIT_LOGS\n DELETE_LOGS\n UNDO_CHANGES\n MANAGE_FINANCE\n VIEW_FINANCE\n CREATE_LEADS\n VIEW_LEADS\n EDIT_LEADS\n DELETE_LEADS\n MANAGE_BUSINESS\n CREATE_USERS\n EDIT_USERS\n VIEW_USERS\n DELETE_USERS\n ALL_PERMISSIONS\n\n @@schema(\"core\")\n}\n\nenum CorePaymentStatus {\n PENDING\n COMPLETED\n FAILED\n\n @@schema(\"core\")\n}\n\nenum CoreSubscriptionType {\n BASIC\n STANDARD\n PREMIUM\n\n @@schema(\"core\")\n}\n\nenum CoreCity {\n BANGALORE\n MUMBAI\n DELHI\n CHENNAI\n HYDERABAD\n\n @@schema(\"core\")\n}\n\nenum CoreBusinessCategory {\n REAL_ESTATE\n\n @@schema(\"core\")\n}\n",
|
|
1291
|
+
"inlineSchemaHash": "40596d771c2ecfcc6a7c17aaba6bb1892c64d6f98641d6bb0415b812130ee4c2",
|
|
1292
1292
|
"copyEngine": true
|
|
1293
1293
|
}
|
|
1294
1294
|
config.dirname = '/'
|
|
@@ -1247,7 +1247,7 @@ const config = {
|
|
|
1247
1247
|
"value": "prisma-client-js"
|
|
1248
1248
|
},
|
|
1249
1249
|
"output": {
|
|
1250
|
-
"value": "/Users/zahidkhan/Desktop/Other/Stayin/FullCode/STAYIN_CORE_DB/prisma/
|
|
1250
|
+
"value": "/Users/zahidkhan/Desktop/Other/Stayin/FullCode/STAYIN_CORE_DB/prisma/client",
|
|
1251
1251
|
"fromEnvVar": null
|
|
1252
1252
|
},
|
|
1253
1253
|
"config": {
|
|
@@ -1269,10 +1269,10 @@ const config = {
|
|
|
1269
1269
|
"isCustomOutput": true
|
|
1270
1270
|
},
|
|
1271
1271
|
"relativeEnvPaths": {
|
|
1272
|
-
"rootEnvPath":
|
|
1273
|
-
"schemaEnvPath": "
|
|
1272
|
+
"rootEnvPath": null,
|
|
1273
|
+
"schemaEnvPath": "../../.env"
|
|
1274
1274
|
},
|
|
1275
|
-
"relativePath": "
|
|
1275
|
+
"relativePath": "../schema",
|
|
1276
1276
|
"clientVersion": "6.10.1",
|
|
1277
1277
|
"engineVersion": "9b628578b3b7cae625e8c927178f15a170e74a9c",
|
|
1278
1278
|
"datasourceNames": [
|
|
@@ -1288,8 +1288,8 @@ const config = {
|
|
|
1288
1288
|
}
|
|
1289
1289
|
}
|
|
1290
1290
|
},
|
|
1291
|
-
"inlineSchema": "/// *\n/// * Flat\n/// * Represents a flat property.\nmodel Flat {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n rent Int\n deposit Int\n areaId Int\n address String\n landmark String?\n googleMapsURL String?\n lat Float?\n lng Float?\n furnishType FlatFurnishType\n bhkType FlatBHKType\n propertyType FlatPropertyType @default(STAND_ALONE_APARTMENT)\n amenities FlatAmenity[]\n availableOn DateTime?\n priority FlatPriority?\n status RealEstatePropertyStatus @default(AVAILABLE)\n isPublic Boolean @default(false)\n thumbnailImage String?\n pmType FlatPmType?\n pmName String?\n pmContactNumber String?\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n guideType FlatGuideType?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n ageOfProperty Int?\n balconyCount Int?\n bathroomCount Int?\n carpetArea Float?\n coveredParking Int?\n facing FlatFacingDirection?\n flatNumber String?\n floorNumber Int?\n lockInPeriodInDays Int?\n maintenanceCharges Float?\n maintenanceChargesIncluded Boolean @default(false)\n openParking Int?\n paintingCharges String?\n parkingCharges String?\n petFriendly Boolean? @default(false)\n totalFloors Int?\n preferredTenantType FlatPreferredTenantType[]\n area RealEstateArea @relation(\"FlatToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"FlatToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToFlat\", fields: [teamGuideId], references: [id])\n variations FlatVariation[]\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToFlat\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToFlat\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToFlat\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewFlats\")\n propertyEvents RealEstatePropertyEvent[] @relation(\"FlatToPropertyEvent\")\n ctaType FlatCtaType @default(SCHEDULE_VISIT)\n ctaPhoneNumber String?\n ctaWhatsappNumber String?\n ctaCustomLink String?\n ctaButtonTitle String?\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"flat\")\n}\n\n/// *\n/// * FlatVariation\n/// * Represents variations of a flat property.\nmodel FlatVariation {\n id Int @id @default(autoincrement())\n flatId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n flat Flat @relation(fields: [flatId], references: [id], onDelete: Cascade)\n\n @@schema(\"flat\")\n}\n\nenum FlatBHKType {\n ONE_RK\n ONE_BHK\n TWO_BHK\n THREE_BHK\n FOUR_BHK\n ONE_RB\n\n @@schema(\"flat\")\n}\n\nenum FlatFurnishType {\n UNFURNISHED\n SEMI_FURNISHED\n FULLY_FURNISHED\n\n @@schema(\"flat\")\n}\n\nenum FlatPriority {\n HIGH\n LOW\n CRITICAL\n MEDIUM\n\n @@schema(\"flat\")\n}\n\nenum FlatPreferredTenantType {\n ANYONE\n FAMILY\n BACHELOR\n STUDENT\n WORKING\n COUPLE\n\n @@schema(\"flat\")\n}\n\nenum FlatPropertyType {\n STAND_ALONE_APARTMENT\n INDIVIDUAL_HOUSE\n GATED_SOCIETY\n SHARED_APARTMENT\n CONDO\n STUDIO_APARTMENT\n\n @@schema(\"flat\")\n}\n\nenum FlatAmenity {\n TWO_WHEELER_PARKING\n FOUR_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"flat\")\n}\n\nenum FlatPmType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatGuideType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatFacingDirection {\n NORTH\n EAST\n WEST\n SOUTH\n\n @@schema(\"flat\")\n}\n\nenum FlatCtaType {\n CALL\n SCHEDULE_VISIT\n CUSTOM_LINK\n WHATSAPP\n\n @@schema(\"flat\")\n}\n\n/// *\n/// * OwnerBusiness\n/// * Represents the association between a business and its owner.\nmodel OwnerBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n ownerUserId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n ownerUser CoreUser @relation(\"OwnerBusinessOwner\", fields: [ownerUserId], references: [id], onDelete: Cascade)\n\n @@schema(\"owner\")\n}\n\n/// *\n/// * PgProperty\n/// * Represents a PG property.\nmodel PgProperty {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n status RealEstatePropertyStatus @default(AVAILABLE)\n areaId Int\n address String\n landmark String?\n exactLocation String?\n googleMapsURL String?\n lat Float?\n lng Float?\n pgPreferredTenantType PgPreferredTenant\n professionPreference String?\n lockInPeriod PgLockInPeriod?\n noticePeriod PgNoticePeriod?\n pgRules PgRules[]\n foodProvided PgFoodProvided[]\n vegOrNonVeg PgFoodType\n foodPricing String?\n foodMenu String?\n otherServices PgOtherService[]\n commonAreaAmenities PgAmenity[]\n roomAmenities PgAmenity[]\n additionalAmenities String?\n isPublic Boolean @default(false)\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea @relation(\"PgPropertyToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"PgPropertyToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToPgProperty\", fields: [teamGuideId], references: [id])\n pgSharingOptions PgSharingOption[] @relation(\"PgSharingOptionToPgProperty\")\n variations PgVariation[]\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToPgProperty\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToPgProperty\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToPgProperty\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgVariation\n/// * Represents variations of a PG property.\nmodel PgVariation {\n id Int @id @default(autoincrement())\n pgId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgSharingOption\n/// * Represents sharing options for a PG property.\nmodel PgSharingOption {\n id Int @id @default(autoincrement())\n pgId Int\n sharingType PgSharingType\n rent Int\n deposit Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(\"PgSharingOptionToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\nenum PgPreferredTenant {\n MALE\n FEMALE\n ANYONE\n\n @@schema(\"pg\")\n}\n\nenum PgAmenity {\n FOUR_WHEELER_PARKING\n TWO_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"pg\")\n}\n\nenum PgSharingType {\n SINGLE_SHARING\n DOUBLE_SHARING\n TRIPLE_SHARING\n FOUR_SHARING\n\n @@schema(\"pg\")\n}\n\nenum PgLockInPeriod {\n ONE_MONTH\n TWO_MONTHS\n THREE_MONTHS\n FOUR_MONTHS\n FIVE_MONTHS\n SIX_MONTHS\n ONE_YEAR\n\n @@schema(\"pg\")\n}\n\nenum PgNoticePeriod {\n DAYS_15\n DAYS_30\n DAYS_60\n\n @@schema(\"pg\")\n}\n\nenum PgRules {\n NO_SMOKING\n NO_ALCOHOL\n NO_MALE_ENTRY\n GATE_CLOSES_AT_NIGHT\n NO_FEMALE_ENTRY\n NO_GUARDIANS_ALLOWED\n NO_RULES\n VEG_ONLY\n NO_VISITORS_OPPOSITE_GENDER\n CURFEW_TIME\n\n @@schema(\"pg\")\n}\n\nenum PgFoodProvided {\n NO_FOOD_PROVIDED\n BREAKFAST\n LUNCH\n DINNER\n EVENING_SNACKS\n\n @@schema(\"pg\")\n}\n\nenum PgFoodType {\n VEG\n NON_VEG\n BOTH\n\n @@schema(\"pg\")\n}\n\nenum PgOtherService {\n LAUNDRY\n WARDEN_FACILITY\n ROOM_CLEANING\n NONE\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * RealEstateQuery\n/// * Now links directly to a business-specific lead.\nmodel RealEstateQuery {\n id Int @id @default(autoincrement())\n queryType String\n queryDesc String\n status RealEstateQueryStatus @default(NEW)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUserId Int\n realEstateBizId Int\n realEstateLeadId Int\n propertyCode String?\n coreUser CoreUser @relation(fields: [coreUserId], references: [id], onDelete: Cascade)\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateLead RealEstateLead @relation(\"RealEstateQueryToRealEstateLead\", fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateNote\nmodel RealEstateNote {\n id Int @id @default(autoincrement())\n noteType RealEstateNoteType\n noteContent String\n realEstateBusinessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToRealEstateNotes\", fields: [realEstateBusinessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFavorite\nmodel RealEstateFavorite {\n id Int @id @default(autoincrement())\n coreFavoriteId Int @unique\n favoriteFlats Int[]\n favoritePgs Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreFavorite CoreFavorite @relation(fields: [coreFavoriteId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateCoreLead\n/// * Represents a core lead with only shared profile details.\nmodel RealEstateCoreLead {\n id Int @id @default(autoincrement())\n coreUserId Int? @unique\n name String?\n phoneNumber String? @unique\n email String? @unique\n gender CoreGender?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUser CoreUser? @relation(\"RealEstateCoreLeadToCoreUser\", fields: [coreUserId], references: [id])\n flatCoreRequirements RealEstateFlatCoreLead?\n realEstateLeads RealEstateLead[]\n pgCoreRequirements RealEstatePGCoreLead?\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for flat-specific requirements.\nmodel RealEstateFlatCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for PG-specific requirements.\nmodel RealEstatePGCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusiness\n/// * Represents a real estate business entity.\nmodel RealEstateBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n category RealEstateCategory\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatProperty Flat[] @relation(\"FlatToRealEstateBusiness\")\n pgProperty PgProperty[] @relation(\"PgPropertyToRealEstateBusiness\")\n business CoreBusiness @relation(\"CoreBusinessToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n businessAnalytics RealEstateBusinessAnalytics? @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\")\n leads RealEstateLead[]\n notes RealEstateNote[] @relation(\"BusinessToRealEstateNotes\")\n RealEstateProfileCustomView RealEstateProfileCustomView[]\n propertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusiness\")\n realEstateQueries RealEstateQuery[]\n visits RealEstateVisit[]\n areas RealEstateArea[] @relation(\"RealEstateAreaToBusiness\")\n customCtaEnabled Boolean @default(false)\n propertyEvents RealEstatePropertyEvent[] @relation(\"BusinessToPropertyEvent\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessUser\n/// * Represents a user within a real estate business.\nmodel RealEstateBusinessUser {\n id Int @id @default(autoincrement())\n coreBusinessUserId Int @unique\n rePermissions RealEstatePermission[] @default([])\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n guidingFlats Flat[] @relation(\"TeamGuideToFlat\")\n guidingPgProperties PgProperty[] @relation(\"TeamGuideToPgProperty\")\n coreBusinessUser CoreBusinessUser @relation(\"RealEstateBusinessUserToCoreBusinessUser\", fields: [coreBusinessUserId], references: [id], onDelete: Cascade)\n assignedLeads RealEstateLead[] @relation(\"RealEstateLeadToRealEstateBusinessUser\")\n realEstateLeadConversions RealEstateLeadConversion[] @relation(\"ConversionToBusinessUser\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateArea\n/// * Extends CoreArea with real estate–specific fields.\nmodel RealEstateArea {\n id Int @id @default(autoincrement())\n coreAreaId Int @unique\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flats Flat[] @relation(\"FlatToRealEstateArea\")\n pgProperties PgProperty[] @relation(\"PgPropertyToRealEstateArea\")\n coreArea CoreArea @relation(\"CoreAreaToRealEstateArea\", fields: [coreAreaId], references: [id], onDelete: Cascade)\n propertyViews RealEstatePropertyView[]\n realEstateBusinesses RealEstateBusiness[] @relation(\"RealEstateAreaToBusiness\")\n realEstateLeads RealEstateLead[] @relation(\"RealEstateLeadAreas\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLead\n/// * Represents a business-specific lead.\nmodel RealEstateLead {\n id Int @id @default(autoincrement())\n name String\n phoneNumber String?\n email String?\n countryCode CoreAllowedCountryCode @default(IN)\n gender CoreGender?\n status RealEstateLeadStatus\n leadType RealEstateLeadType?\n preferredCallTime RealEstatePreferredCallTime?\n moveInDate DateTime?\n budgetStart Int?\n budgetEnd Int?\n notes String?\n realEstateCoreLeadId Int\n realEstateBizId Int\n assignedToId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatLead RealEstateFlatLead?\n pgLead RealEstatePGLead?\n assignedTo RealEstateBusinessUser? @relation(\"RealEstateLeadToRealEstateBusinessUser\", fields: [assignedToId], references: [id])\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n leadConversions RealEstateLeadConversion[] @relation(\"RealEstateLeadConversionToRealEstateLead\")\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\")\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToRealEstateLead\")\n queries RealEstateQuery[] @relation(\"RealEstateQueryToRealEstateLead\")\n visits RealEstateVisit[] @relation(\"RealEstateVisitToRealEstateLead\")\n areas RealEstateArea[] @relation(\"RealEstateLeadAreas\")\n\n @@unique([realEstateBizId, phoneNumber])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisit\n/// * Represents a visit associated with a real estate lead.\nmodel RealEstateVisit {\n id Int @id @default(autoincrement())\n leadId Int\n realEstateBizId Int\n propertyCode String\n visitType RealEstateCategory?\n scheduledAt DateTime\n status RealEstateVisitStatus @default(SCHEDULED)\n notes String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateVisit\")\n lead RealEstateLead @relation(\"RealEstateVisitToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n visitAnalytics RealEstateVisitAnalytics[] @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisitAnalytics\n/// * Represents analytics data for a real estate visit.\nmodel RealEstateVisitAnalytics {\n id Int @id @default(autoincrement())\n visitId Int\n duration Int\n feedback String?\n rated Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n visit RealEstateVisit @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\", fields: [visitId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadConversion\n/// * Represents the conversion of a lead.\nmodel RealEstateLeadConversion {\n id Int @id @default(autoincrement())\n leadId Int\n convertedAt DateTime @default(now())\n convertedById Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n convertedBy RealEstateBusinessUser? @relation(\"ConversionToBusinessUser\", fields: [convertedById], references: [id])\n lead RealEstateLead @relation(\"RealEstateLeadConversionToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyView\n/// * Represents a view of a property in real estate.\nmodel RealEstatePropertyView {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n viewedAt DateTime @default(now())\n realEstateBizUserId Int?\n realEstateBizId Int\n areaId Int?\n visitId Int?\n flatId Int?\n pgId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea? @relation(fields: [areaId], references: [id])\n flat Flat? @relation(\"RealEstatePropertyViewToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyViewToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyViewToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\", fields: [realEstateBizUserId], references: [id])\n visit RealEstateVisit? @relation(\"RealEstatePropertyViewToRealEstateVisit\", fields: [visitId], references: [id])\n\n @@index([realEstateBizId, propertyType, viewedAt])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessAnalytics\n/// * Represents analytics data for a real estate business.\nmodel RealEstateBusinessAnalytics {\n id Int @id @default(autoincrement())\n businessId Int @unique\n totalLeads Int @default(0)\n totalVisits Int @default(0)\n totalPropertyViews Int @default(0)\n monthlyLeads Int @default(0)\n monthlyVisits Int @default(0)\n monthlyPropertyViews Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyAnalytics\n/// * Represents analytics data for a specific property.\nmodel RealEstatePropertyAnalytics {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n realEstateBizId Int\n totalViews Int @default(0)\n uniqueViews Int @default(0)\n averageViewDuration Float @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatId Int?\n pgId Int?\n flat Flat? @relation(\"RealEstatePropertyAnalyticsToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyAnalyticsToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnFlats\n/// * Join table for M:N relationship between RealEstateLead and Flat.\nmodel RealEstateLeadsOnFlats {\n leadId Int\n flatId Int\n flat Flat @relation(\"RealEstateLeadsOnFlatsToFlat\", fields: [flatId], references: [id], onDelete: Cascade)\n lead RealEstateLead @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@id([leadId, flatId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnPgs\n/// * Join table for M:N relationship between RealEstateLead and PgProperty.\nmodel RealEstateLeadsOnPgs {\n leadId Int\n pgId Int\n lead RealEstateLead @relation(\"RealEstateLeadsOnPgsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n pg PgProperty @relation(\"RealEstateLeadsOnPgsToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@id([leadId, pgId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatLead\n/// * Represents a flat-specific lead extension.\nmodel RealEstateFlatLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n area CoreArea[] @relation(\"CoreAreaToRealEstateFlatLead\")\n\n @@map(\"FlatLead\")\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGLead\n/// * Represents a PG-specific lead extension.\nmodel RealEstatePGLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n budget Int?\n areaId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area CoreArea? @relation(\"CoreAreaToRealEstatePgLead\", fields: [areaId], references: [id])\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@map(\"PGLead\")\n @@schema(\"real_estate\")\n}\n\nmodel RealEstateProfileCustomView {\n id Int @id @default(autoincrement())\n title String\n description String?\n businessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n business RealEstateBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n flats Flat[] @relation(\"RealEstateProfileCustomViewFlats\")\n pgs PgProperty[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyEvent\n/// * A log of every click/share/CTA action on a flat.\nmodel RealEstatePropertyEvent {\n id Int @id @default(autoincrement())\n flatId Int?\n realEstateBizId Int\n eventType PropertyEventType\n createdAt DateTime @default(now())\n\n /// Relations\n flat Flat? @relation(\"FlatToPropertyEvent\", fields: [flatId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToPropertyEvent\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@index([flatId])\n @@index([realEstateBizId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * PropertyEventType\n/// * All the different click/share event types we want to track.\nenum PropertyEventType {\n SHARE_CLICK\n VISIT_CLICK\n QUERY_CLICK\n CTA_CALL\n CTA_WHATSAPP\n CTA_CUSTOM_LINK\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePermission {\n VIEW_VISITS\n EDIT_VISITS\n CREATE_VISITS\n DELETE_VISITS\n ASSIGN_VISITS\n VIEW_PROPERTIES\n EDIT_PROPERTIES\n DELETE_PROPERTIES\n UPLOAD_PROPERTIES\n VIEW_PROPERTY_FLAT_OWNER_DETAILS\n VIEW_PROPERTY_FLAT_LOCATION\n VIEW_LEADS_FLAT_CONTACT_INFO\n MANAGE_PROPERTY_FLAT_OWNER_DETAILS\n MANAGE_PROPERTY_FLAT_LOCATION\n MANAGE_LEADS_FLAT_CONTACT_INFO\n VIEW_QUERIES\n EDIT_QUERIES\n DELETE_QUERIES\n CREATE_QUERIES\n MANAGE_QUERIES\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePreferredCallTime {\n MORNING\n AFTERNOON\n NIGHT\n EVENING\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyStatus {\n AVAILABLE\n NOT_AVAILABLE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateCategory {\n FLAT\n PG\n OWNER\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadStatus {\n NEW\n IN_CONTACT\n BOOKED\n VISITED\n CLOSED\n LOST\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadType {\n FLAT\n SALE\n OTHER\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateVisitStatus {\n SCHEDULED\n COMPLETED\n CANCELLED\n RESCHEDULED\n NO_SHOW\n RE_VISIT\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyType {\n FLAT\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateNoteType {\n RED_NOTE\n BLUE_NOTE\n GREEN_NOTE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateQueryStatus {\n NEW\n IN_PROGRESS\n RESOLVED\n REJECTED\n CLOSED\n\n @@schema(\"real_estate\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"driverAdapters\", \"fullTextSearchPostgres\", \"multiSchema\"]\n output = \"./client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n schemas = [\"core\", \"flat\", \"owner\", \"pg\", \"real_estate\"]\n}\n\n/// *\n/// * CoreUser\n/// * Represents a user in the system.\nmodel CoreUser {\n id Int @id @default(autoincrement())\n email String? @unique\n hash String?\n firstName String\n lastName String?\n countryCode CoreAllowedCountryCode @default(IN)\n phoneNumber String? @unique\n googleId String? @unique\n isActive Boolean @default(true)\n gender CoreGender?\n dateOfBirth DateTime?\n profilePicture String?\n resetToken String?\n resetTokenExpiry DateTime?\n authProvider CoreAuthenticationProvider @default(EMAIL)\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n passwordCreated Boolean @default(false)\n authoredLogs CoreBusinessLog[]\n authoredUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n uploadedDocs CoreDocument[] @relation(\"DocumentUser\")\n favorite CoreFavorite?\n invitesSent CoreInvite[] @relation(\"UserInvites\")\n posts CorePost[]\n refreshTokens CoreRefreshToken[]\n searchHistories CoreSearchHistory[]\n ownerBusinesses OwnerBusiness[] @relation(\"OwnerBusinessOwner\")\n realEstateCoreAsLeads RealEstateCoreLead? @relation(\"RealEstateCoreLeadToCoreUser\")\n realEstateQueries RealEstateQuery[]\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreFavorite\n/// * Represents a user's favorite businesses.\nmodel CoreFavorite {\n id Int @id @default(autoincrement())\n userId Int @unique\n favoriteBusinesses Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateFavorite RealEstateFavorite?\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusiness\n/// * Represents a business entity.\nmodel CoreBusiness {\n id Int @id @default(autoincrement())\n businessName String\n username String? @unique\n instagramHandle String?\n bio String?\n logoUrl String?\n manyChatId String?\n businessAddress String?\n businessContactNumber String?\n businessContactNumberCountryCode CoreAllowedCountryCode @default(IN)\n businessWebsite String?\n city CoreCity\n businessCategory CoreBusinessCategory\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n customLinks Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n deletedAt DateTime?\n isActive Boolean @default(true)\n businessLogs CoreBusinessLog[]\n businessUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n documents CoreDocument[]\n instagramAccount CoreInstagramAccount?\n invites CoreInvite[]\n payments CorePayment[]\n posts CorePost[]\n subscriptions CoreSubscription[]\n realEstateBusiness RealEstateBusiness? @relation(\"CoreBusinessToRealEstateBusiness\")\n areas CoreArea[] @relation(\"CoreBusinessToCoreArea\")\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUser\n/// * Represents the association between users and businesses.\nmodel CoreBusinessUser {\n id Int @id @default(autoincrement())\n userId Int\n businessId Int\n roleInBusiness CoreOrganizationRole @default(STAFF)\n permissions CorePermission[] @default([])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstateBusinessUserToCoreBusinessUser\")\n\n @@unique([userId, businessId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInvite\n/// * Represents an invitation to join a business.\nmodel CoreInvite {\n id Int @id @default(autoincrement())\n businessId Int\n inviterId Int\n inviteeEmail String\n token String @unique\n expiresAt DateTime\n roleInBusiness CoreOrganizationRole\n permissions CorePermission[] @default([])\n businessPermissions Json?\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n inviter CoreUser @relation(\"UserInvites\", fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreRefreshToken\n/// * Represents a user's refresh token for authentication.\nmodel CoreRefreshToken {\n deviceId String @id\n deviceName String\n token String\n expiresAt DateTime\n userId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSubscription\n/// * Represents a business subscription.\nmodel CoreSubscription {\n id Int @id @default(autoincrement())\n businessId Int\n type CoreSubscriptionType @default(BASIC)\n startDate DateTime @default(now())\n endDate DateTime?\n isActive Boolean @default(true)\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePayment\n/// * Represents a payment made by a business.\nmodel CorePayment {\n id Int @id @default(autoincrement())\n businessId Int\n amount Int\n status CorePaymentStatus @default(PENDING)\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSearchHistory\n/// * Represents a user's search history.\nmodel CoreSearchHistory {\n id Int @id @default(autoincrement())\n userId Int\n query String\n searchedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId, searchedAt])\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePost\n/// * Represents a post made by a user within a business.\nmodel CorePost {\n id Int @id @default(autoincrement())\n businessId Int\n instagramPostId String?\n caption String?\n imageUrl String?\n createdAt DateTime @default(now())\n userId Int?\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInstagramAccount\n/// * Represents a business's Instagram account.\nmodel CoreInstagramAccount {\n id Int @id @default(autoincrement())\n businessId Int @unique\n instagramUserId String?\n accessToken String?\n connectedAt DateTime? @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreDocument\n/// * Represents documents uploaded by users or businesses.\nmodel CoreDocument {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int?\n docUrl String\n docName String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(\"DocumentUser\", fields: [userId], references: [id])\n\n @@index([businessId, entityType, entityId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessLog\n/// * Represents logs related to business actions.\nmodel CoreBusinessLog {\n id BigInt @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String?\n entityId Int?\n action String\n oldData Json?\n newData Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUpdate\n/// * Represents updates made to a business.\nmodel CoreBusinessUpdate {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int\n content String\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreArea\n/// * This model serves as the GLOBAL concept of an area.\nmodel CoreArea {\n id Int @id @default(autoincrement())\n name String\n city CoreCity\n lat Float?\n lng Float?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstatePgLeads RealEstatePGLead[] @relation(\"CoreAreaToRealEstatePgLead\")\n realEstateAreas RealEstateArea? @relation(\"CoreAreaToRealEstateArea\")\n realEstateFlatLeads RealEstateFlatLead[] @relation(\"CoreAreaToRealEstateFlatLead\")\n businesses CoreBusiness[] @relation(\"CoreBusinessToCoreArea\")\n\n @@unique([name, city])\n @@schema(\"core\")\n}\n\nenum CoreGender {\n MALE\n FEMALE\n OTHER\n\n @@schema(\"core\")\n}\n\nenum CoreAuthenticationProvider {\n GOOGLE\n EMAIL\n\n @@schema(\"core\")\n}\n\nenum CoreAllowedCountryCode {\n IN\n\n @@schema(\"core\")\n}\n\nenum CoreOrganizationRole {\n OWNER\n ADMIN\n STAFF\n\n @@schema(\"core\")\n}\n\nenum CorePermission {\n VIEW_LOGS\n EDIT_LOGS\n DELETE_LOGS\n UNDO_CHANGES\n MANAGE_FINANCE\n VIEW_FINANCE\n CREATE_LEADS\n VIEW_LEADS\n EDIT_LEADS\n DELETE_LEADS\n MANAGE_BUSINESS\n CREATE_USERS\n EDIT_USERS\n VIEW_USERS\n DELETE_USERS\n ALL_PERMISSIONS\n\n @@schema(\"core\")\n}\n\nenum CorePaymentStatus {\n PENDING\n COMPLETED\n FAILED\n\n @@schema(\"core\")\n}\n\nenum CoreSubscriptionType {\n BASIC\n STANDARD\n PREMIUM\n\n @@schema(\"core\")\n}\n\nenum CoreCity {\n BANGALORE\n MUMBAI\n DELHI\n CHENNAI\n HYDERABAD\n\n @@schema(\"core\")\n}\n\nenum CoreBusinessCategory {\n REAL_ESTATE\n\n @@schema(\"core\")\n}\n",
|
|
1292
|
-
"inlineSchemaHash": "
|
|
1291
|
+
"inlineSchema": "/// *\n/// * Flat\n/// * Represents a flat property.\nmodel Flat {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n rent Int\n deposit Int\n areaId Int\n address String\n landmark String?\n googleMapsURL String?\n lat Float?\n lng Float?\n furnishType FlatFurnishType\n bhkType FlatBHKType\n propertyType FlatPropertyType @default(STAND_ALONE_APARTMENT)\n amenities FlatAmenity[]\n availableOn DateTime?\n priority FlatPriority?\n status RealEstatePropertyStatus @default(AVAILABLE)\n isPublic Boolean @default(false)\n thumbnailImage String?\n pmType FlatPmType?\n pmName String?\n pmContactNumber String?\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n guideType FlatGuideType?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n ageOfProperty Int?\n balconyCount Int?\n bathroomCount Int?\n carpetArea Float?\n coveredParking Int?\n facing FlatFacingDirection?\n flatNumber String?\n floorNumber Int?\n lockInPeriodInDays Int?\n maintenanceCharges Float?\n maintenanceChargesIncluded Boolean @default(false)\n openParking Int?\n paintingCharges String?\n parkingCharges String?\n petFriendly Boolean? @default(false)\n totalFloors Int?\n preferredTenantType FlatPreferredTenantType[]\n area RealEstateArea @relation(\"FlatToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"FlatToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToFlat\", fields: [teamGuideId], references: [id])\n variations FlatVariation[]\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToFlat\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToFlat\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToFlat\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewFlats\")\n propertyEvents RealEstatePropertyEvent[] @relation(\"FlatToPropertyEvent\")\n ctaType FlatCtaType @default(SCHEDULE_VISIT)\n ctaPhoneNumber String?\n ctaWhatsappNumber String?\n ctaCustomLink String?\n ctaButtonTitle String?\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"flat\")\n}\n\n/// *\n/// * FlatVariation\n/// * Represents variations of a flat property.\nmodel FlatVariation {\n id Int @id @default(autoincrement())\n flatId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now()) @updatedAt\n flat Flat @relation(fields: [flatId], references: [id], onDelete: Cascade)\n\n @@schema(\"flat\")\n}\n\nenum FlatBHKType {\n ONE_RK\n ONE_BHK\n TWO_BHK\n THREE_BHK\n FOUR_BHK\n ONE_RB\n\n @@schema(\"flat\")\n}\n\nenum FlatFurnishType {\n UNFURNISHED\n SEMI_FURNISHED\n FULLY_FURNISHED\n\n @@schema(\"flat\")\n}\n\nenum FlatPriority {\n HIGH\n LOW\n CRITICAL\n MEDIUM\n\n @@schema(\"flat\")\n}\n\nenum FlatPreferredTenantType {\n ANYONE\n FAMILY\n BACHELOR\n STUDENT\n WORKING\n COUPLE\n\n @@schema(\"flat\")\n}\n\nenum FlatPropertyType {\n STAND_ALONE_APARTMENT\n INDIVIDUAL_HOUSE\n GATED_SOCIETY\n SHARED_APARTMENT\n CONDO\n STUDIO_APARTMENT\n\n @@schema(\"flat\")\n}\n\nenum FlatAmenity {\n TWO_WHEELER_PARKING\n FOUR_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"flat\")\n}\n\nenum FlatPmType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatGuideType {\n OWNER\n CARETAKER\n BROKER\n AGENCY\n BUSINESS\n OTHER\n\n @@schema(\"flat\")\n}\n\nenum FlatFacingDirection {\n NORTH\n EAST\n WEST\n SOUTH\n\n @@schema(\"flat\")\n}\n\nenum FlatCtaType {\n CALL\n SCHEDULE_VISIT\n CUSTOM_LINK\n WHATSAPP\n\n @@schema(\"flat\")\n}\n\n/// *\n/// * OwnerBusiness\n/// * Represents the association between a business and its owner.\nmodel OwnerBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n ownerUserId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n ownerUser CoreUser @relation(\"OwnerBusinessOwner\", fields: [ownerUserId], references: [id], onDelete: Cascade)\n\n @@schema(\"owner\")\n}\n\n/// *\n/// * PgProperty\n/// * Represents a PG property.\nmodel PgProperty {\n id Int @id @default(autoincrement())\n businessId Int\n propertyCode String\n name String\n status RealEstatePropertyStatus @default(AVAILABLE)\n areaId Int\n address String\n landmark String?\n exactLocation String?\n googleMapsURL String?\n lat Float?\n lng Float?\n pgPreferredTenantType PgPreferredTenant\n professionPreference String?\n lockInPeriod PgLockInPeriod?\n noticePeriod PgNoticePeriod?\n pgRules PgRules[]\n foodProvided PgFoodProvided[]\n vegOrNonVeg PgFoodType\n foodPricing String?\n foodMenu String?\n otherServices PgOtherService[]\n commonAreaAmenities PgAmenity[]\n roomAmenities PgAmenity[]\n additionalAmenities String?\n isPublic Boolean @default(false)\n ownerName String?\n ownerNumber String?\n guideName String?\n guideNumber String?\n teamGuideId Int?\n description String?\n bookingURL String?\n images String[]\n videos String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea @relation(\"PgPropertyToRealEstateArea\", fields: [areaId], references: [id], onDelete: Cascade)\n business RealEstateBusiness @relation(\"PgPropertyToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n teamGuide RealEstateBusinessUser? @relation(\"TeamGuideToPgProperty\", fields: [teamGuideId], references: [id])\n pgSharingOptions PgSharingOption[] @relation(\"PgSharingOptionToPgProperty\")\n variations PgVariation[]\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToPgProperty\")\n realEstatePropertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToPgProperty\")\n realEstatePropertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToPgProperty\")\n RealEstateProfileCustomView RealEstateProfileCustomView[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@unique([businessId, propertyCode])\n @@index([businessId, areaId])\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgVariation\n/// * Represents variations of a PG property.\nmodel PgVariation {\n id Int @id @default(autoincrement())\n pgId Int\n name String?\n description String?\n rent Int?\n deposit Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * PgSharingOption\n/// * Represents sharing options for a PG property.\nmodel PgSharingOption {\n id Int @id @default(autoincrement())\n pgId Int\n sharingType PgSharingType\n rent Int\n deposit Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n pg PgProperty @relation(\"PgSharingOptionToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@schema(\"pg\")\n}\n\nenum PgPreferredTenant {\n MALE\n FEMALE\n ANYONE\n\n @@schema(\"pg\")\n}\n\nenum PgAmenity {\n FOUR_WHEELER_PARKING\n TWO_WHEELER_PARKING\n AIR_CONDITIONER\n BALCONY\n CLOSET\n COFFEE_TABLE\n COMMON_WASHING_MACHINE\n DINING_TABLE\n FRIDGE\n KITCHEN_APPLIANCES\n KING_SIZED_BED\n POWER_BACKUP\n LIFT\n RO_WATER_AQUA_GUARD\n QUEEN_SIZED_BED\n SECURITY\n SOFA\n SINGLE_BED\n TV\n WASHING_MACHINE\n TWIN_SIZED_BED\n WATER_HEATER\n UTILITY_AREA\n STUDY_TABLE\n WIFI\n GYM\n CCTV_SECURITY\n PET_FRIENDLY\n\n @@schema(\"pg\")\n}\n\nenum PgSharingType {\n SINGLE_SHARING\n DOUBLE_SHARING\n TRIPLE_SHARING\n FOUR_SHARING\n\n @@schema(\"pg\")\n}\n\nenum PgLockInPeriod {\n ONE_MONTH\n TWO_MONTHS\n THREE_MONTHS\n FOUR_MONTHS\n FIVE_MONTHS\n SIX_MONTHS\n ONE_YEAR\n\n @@schema(\"pg\")\n}\n\nenum PgNoticePeriod {\n DAYS_15\n DAYS_30\n DAYS_60\n\n @@schema(\"pg\")\n}\n\nenum PgRules {\n NO_SMOKING\n NO_ALCOHOL\n NO_MALE_ENTRY\n GATE_CLOSES_AT_NIGHT\n NO_FEMALE_ENTRY\n NO_GUARDIANS_ALLOWED\n NO_RULES\n VEG_ONLY\n NO_VISITORS_OPPOSITE_GENDER\n CURFEW_TIME\n\n @@schema(\"pg\")\n}\n\nenum PgFoodProvided {\n NO_FOOD_PROVIDED\n BREAKFAST\n LUNCH\n DINNER\n EVENING_SNACKS\n\n @@schema(\"pg\")\n}\n\nenum PgFoodType {\n VEG\n NON_VEG\n BOTH\n\n @@schema(\"pg\")\n}\n\nenum PgOtherService {\n LAUNDRY\n WARDEN_FACILITY\n ROOM_CLEANING\n NONE\n\n @@schema(\"pg\")\n}\n\n/// *\n/// * RealEstateQuery\n/// * Now links directly to a business-specific lead.\nmodel RealEstateQuery {\n id Int @id @default(autoincrement())\n queryType String\n queryDesc String\n status RealEstateQueryStatus @default(NEW)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUserId Int\n realEstateBizId Int\n realEstateLeadId Int\n propertyCode String?\n coreUser CoreUser @relation(fields: [coreUserId], references: [id], onDelete: Cascade)\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateLead RealEstateLead @relation(\"RealEstateQueryToRealEstateLead\", fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateNote\nmodel RealEstateNote {\n id Int @id @default(autoincrement())\n noteType RealEstateNoteType\n noteContent String\n realEstateBusinessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToRealEstateNotes\", fields: [realEstateBusinessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFavorite\nmodel RealEstateFavorite {\n id Int @id @default(autoincrement())\n coreFavoriteId Int @unique\n favoriteFlats Int[]\n favoritePgs Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreFavorite CoreFavorite @relation(fields: [coreFavoriteId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateCoreLead\n/// * Represents a core lead with only shared profile details.\nmodel RealEstateCoreLead {\n id Int @id @default(autoincrement())\n coreUserId Int? @unique\n name String?\n phoneNumber String? @unique\n email String? @unique\n gender CoreGender?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n coreUser CoreUser? @relation(\"RealEstateCoreLeadToCoreUser\", fields: [coreUserId], references: [id])\n flatCoreRequirements RealEstateFlatCoreLead?\n realEstateLeads RealEstateLead[]\n pgCoreRequirements RealEstatePGCoreLead?\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for flat-specific requirements.\nmodel RealEstateFlatCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGCoreLead\n/// * Optional, 1:1 extension of RealEstateCoreLead for PG-specific requirements.\nmodel RealEstatePGCoreLead {\n id Int @id @default(autoincrement())\n realEstateCoreLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusiness\n/// * Represents a real estate business entity.\nmodel RealEstateBusiness {\n id Int @id @default(autoincrement())\n businessId Int @unique\n category RealEstateCategory\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatProperty Flat[] @relation(\"FlatToRealEstateBusiness\")\n pgProperty PgProperty[] @relation(\"PgPropertyToRealEstateBusiness\")\n business CoreBusiness @relation(\"CoreBusinessToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n businessAnalytics RealEstateBusinessAnalytics? @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\")\n leads RealEstateLead[]\n notes RealEstateNote[] @relation(\"BusinessToRealEstateNotes\")\n RealEstateProfileCustomView RealEstateProfileCustomView[]\n propertyAnalytics RealEstatePropertyAnalytics[] @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusiness\")\n realEstateQueries RealEstateQuery[]\n visits RealEstateVisit[]\n areas RealEstateArea[] @relation(\"RealEstateAreaToBusiness\")\n customCtaEnabled Boolean @default(false)\n propertyEvents RealEstatePropertyEvent[] @relation(\"BusinessToPropertyEvent\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessUser\n/// * Represents a user within a real estate business.\nmodel RealEstateBusinessUser {\n id Int @id @default(autoincrement())\n coreBusinessUserId Int @unique\n rePermissions RealEstatePermission[] @default([])\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n guidingFlats Flat[] @relation(\"TeamGuideToFlat\")\n guidingPgProperties PgProperty[] @relation(\"TeamGuideToPgProperty\")\n coreBusinessUser CoreBusinessUser @relation(\"RealEstateBusinessUserToCoreBusinessUser\", fields: [coreBusinessUserId], references: [id], onDelete: Cascade)\n assignedLeads RealEstateLead[] @relation(\"RealEstateLeadToRealEstateBusinessUser\")\n realEstateLeadConversions RealEstateLeadConversion[] @relation(\"ConversionToBusinessUser\")\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateArea\n/// * Extends CoreArea with real estate–specific fields.\nmodel RealEstateArea {\n id Int @id @default(autoincrement())\n coreAreaId Int @unique\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flats Flat[] @relation(\"FlatToRealEstateArea\")\n pgProperties PgProperty[] @relation(\"PgPropertyToRealEstateArea\")\n coreArea CoreArea @relation(\"CoreAreaToRealEstateArea\", fields: [coreAreaId], references: [id], onDelete: Cascade)\n propertyViews RealEstatePropertyView[]\n realEstateBusinesses RealEstateBusiness[] @relation(\"RealEstateAreaToBusiness\")\n realEstateLeads RealEstateLead[] @relation(\"RealEstateLeadAreas\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLead\n/// * Represents a business-specific lead.\nmodel RealEstateLead {\n id Int @id @default(autoincrement())\n name String\n phoneNumber String?\n email String?\n countryCode CoreAllowedCountryCode @default(IN)\n gender CoreGender?\n status RealEstateLeadStatus\n leadType RealEstateLeadType?\n preferredCallTime RealEstatePreferredCallTime?\n moveInDate DateTime?\n budgetStart Int?\n budgetEnd Int?\n notes String?\n realEstateCoreLeadId Int\n realEstateBizId Int\n assignedToId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatLead RealEstateFlatLead?\n pgLead RealEstatePGLead?\n assignedTo RealEstateBusinessUser? @relation(\"RealEstateLeadToRealEstateBusinessUser\", fields: [assignedToId], references: [id])\n realEstateBiz RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateCoreLead RealEstateCoreLead @relation(fields: [realEstateCoreLeadId], references: [id], onDelete: Cascade)\n leadConversions RealEstateLeadConversion[] @relation(\"RealEstateLeadConversionToRealEstateLead\")\n realEstateLeadsOnFlats RealEstateLeadsOnFlats[] @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\")\n realEstateLeadsOnPgs RealEstateLeadsOnPgs[] @relation(\"RealEstateLeadsOnPgsToRealEstateLead\")\n queries RealEstateQuery[] @relation(\"RealEstateQueryToRealEstateLead\")\n visits RealEstateVisit[] @relation(\"RealEstateVisitToRealEstateLead\")\n areas RealEstateArea[] @relation(\"RealEstateLeadAreas\")\n\n @@unique([realEstateBizId, phoneNumber])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisit\n/// * Represents a visit associated with a real estate lead.\nmodel RealEstateVisit {\n id Int @id @default(autoincrement())\n leadId Int\n realEstateBizId Int\n propertyCode String\n visitType RealEstateCategory?\n scheduledAt DateTime\n status RealEstateVisitStatus @default(SCHEDULED)\n notes String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n propertyViews RealEstatePropertyView[] @relation(\"RealEstatePropertyViewToRealEstateVisit\")\n lead RealEstateLead @relation(\"RealEstateVisitToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(fields: [realEstateBizId], references: [id], onDelete: Cascade)\n visitAnalytics RealEstateVisitAnalytics[] @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateVisitAnalytics\n/// * Represents analytics data for a real estate visit.\nmodel RealEstateVisitAnalytics {\n id Int @id @default(autoincrement())\n visitId Int\n duration Int\n feedback String?\n rated Boolean @default(false)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n visit RealEstateVisit @relation(\"RealEstateVisitAnalyticsToRealEstateVisit\", fields: [visitId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadConversion\n/// * Represents the conversion of a lead.\nmodel RealEstateLeadConversion {\n id Int @id @default(autoincrement())\n leadId Int\n convertedAt DateTime @default(now())\n convertedById Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n convertedBy RealEstateBusinessUser? @relation(\"ConversionToBusinessUser\", fields: [convertedById], references: [id])\n lead RealEstateLead @relation(\"RealEstateLeadConversionToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyView\n/// * Represents a view of a property in real estate.\nmodel RealEstatePropertyView {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n viewedAt DateTime @default(now())\n realEstateBizUserId Int?\n realEstateBizId Int\n areaId Int?\n visitId Int?\n flatId Int?\n pgId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area RealEstateArea? @relation(fields: [areaId], references: [id])\n flat Flat? @relation(\"RealEstatePropertyViewToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyViewToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyViewToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstatePropertyViewToRealEstateBusinessUser\", fields: [realEstateBizUserId], references: [id])\n visit RealEstateVisit? @relation(\"RealEstatePropertyViewToRealEstateVisit\", fields: [visitId], references: [id])\n\n @@index([realEstateBizId, propertyType, viewedAt])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateBusinessAnalytics\n/// * Represents analytics data for a real estate business.\nmodel RealEstateBusinessAnalytics {\n id Int @id @default(autoincrement())\n businessId Int @unique\n totalLeads Int @default(0)\n totalVisits Int @default(0)\n totalPropertyViews Int @default(0)\n monthlyLeads Int @default(0)\n monthlyVisits Int @default(0)\n monthlyPropertyViews Int @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstateBusiness RealEstateBusiness @relation(\"RealEstateBusinessAnalyticsToRealEstateBusiness\", fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyAnalytics\n/// * Represents analytics data for a specific property.\nmodel RealEstatePropertyAnalytics {\n id Int @id @default(autoincrement())\n propertyType RealEstatePropertyType\n realEstateBizId Int\n totalViews Int @default(0)\n uniqueViews Int @default(0)\n averageViewDuration Float @default(0)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n flatId Int?\n pgId Int?\n flat Flat? @relation(\"RealEstatePropertyAnalyticsToFlat\", fields: [flatId], references: [id])\n pg PgProperty? @relation(\"RealEstatePropertyAnalyticsToPgProperty\", fields: [pgId], references: [id])\n realEstateBusiness RealEstateBusiness @relation(\"RealEstatePropertyAnalyticsToRealEstateBusiness\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnFlats\n/// * Join table for M:N relationship between RealEstateLead and Flat.\nmodel RealEstateLeadsOnFlats {\n leadId Int\n flatId Int\n flat Flat @relation(\"RealEstateLeadsOnFlatsToFlat\", fields: [flatId], references: [id], onDelete: Cascade)\n lead RealEstateLead @relation(\"RealEstateLeadsOnFlatsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n\n @@id([leadId, flatId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateLeadsOnPgs\n/// * Join table for M:N relationship between RealEstateLead and PgProperty.\nmodel RealEstateLeadsOnPgs {\n leadId Int\n pgId Int\n lead RealEstateLead @relation(\"RealEstateLeadsOnPgsToRealEstateLead\", fields: [leadId], references: [id], onDelete: Cascade)\n pg PgProperty @relation(\"RealEstateLeadsOnPgsToPgProperty\", fields: [pgId], references: [id], onDelete: Cascade)\n\n @@id([leadId, pgId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstateFlatLead\n/// * Represents a flat-specific lead extension.\nmodel RealEstateFlatLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n amenities FlatAmenity[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n bhkType FlatBHKType[]\n furnishings FlatFurnishType[]\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n area CoreArea[] @relation(\"CoreAreaToRealEstateFlatLead\")\n\n @@map(\"FlatLead\")\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePGLead\n/// * Represents a PG-specific lead extension.\nmodel RealEstatePGLead {\n id Int @id @default(autoincrement())\n realEstateLeadId Int @unique\n sharingType PgSharingType?\n pgAmenities PgAmenity[]\n budget Int?\n areaId Int?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n area CoreArea? @relation(\"CoreAreaToRealEstatePgLead\", fields: [areaId], references: [id])\n realEstateLead RealEstateLead @relation(fields: [realEstateLeadId], references: [id], onDelete: Cascade)\n\n @@map(\"PGLead\")\n @@schema(\"real_estate\")\n}\n\nmodel RealEstateProfileCustomView {\n id Int @id @default(autoincrement())\n title String\n description String?\n businessId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n business RealEstateBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n flats Flat[] @relation(\"RealEstateProfileCustomViewFlats\")\n pgs PgProperty[] @relation(\"RealEstateProfileCustomViewPgs\")\n\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * RealEstatePropertyEvent\n/// * A log of every click/share/CTA action on a flat.\nmodel RealEstatePropertyEvent {\n id Int @id @default(autoincrement())\n flatId Int?\n realEstateBizId Int\n eventType PropertyEventType\n createdAt DateTime @default(now())\n\n /// Relations\n flat Flat? @relation(\"FlatToPropertyEvent\", fields: [flatId], references: [id], onDelete: Cascade)\n realEstateBusiness RealEstateBusiness @relation(\"BusinessToPropertyEvent\", fields: [realEstateBizId], references: [id], onDelete: Cascade)\n\n @@index([flatId])\n @@index([realEstateBizId])\n @@schema(\"real_estate\")\n}\n\n/// *\n/// * PropertyEventType\n/// * All the different click/share event types we want to track.\nenum PropertyEventType {\n SHARE_CLICK\n VISIT_CLICK\n QUERY_CLICK\n CTA_CALL\n CTA_WHATSAPP\n CTA_CUSTOM_LINK\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePermission {\n VIEW_VISITS\n EDIT_VISITS\n CREATE_VISITS\n DELETE_VISITS\n ASSIGN_VISITS\n VIEW_PROPERTIES\n EDIT_PROPERTIES\n DELETE_PROPERTIES\n UPLOAD_PROPERTIES\n VIEW_PROPERTY_FLAT_OWNER_DETAILS\n VIEW_PROPERTY_FLAT_LOCATION\n VIEW_LEADS_FLAT_CONTACT_INFO\n MANAGE_PROPERTY_FLAT_OWNER_DETAILS\n MANAGE_PROPERTY_FLAT_LOCATION\n MANAGE_LEADS_FLAT_CONTACT_INFO\n VIEW_QUERIES\n EDIT_QUERIES\n DELETE_QUERIES\n CREATE_QUERIES\n MANAGE_QUERIES\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePreferredCallTime {\n MORNING\n AFTERNOON\n NIGHT\n EVENING\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyStatus {\n AVAILABLE\n NOT_AVAILABLE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateCategory {\n FLAT\n PG\n OWNER\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadStatus {\n NEW\n IN_CONTACT\n BOOKED\n VISITED\n CLOSED\n LOST\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateLeadType {\n FLAT\n SALE\n OTHER\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateVisitStatus {\n SCHEDULED\n COMPLETED\n CANCELLED\n RESCHEDULED\n NO_SHOW\n RE_VISIT\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstatePropertyType {\n FLAT\n PG\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateNoteType {\n RED_NOTE\n BLUE_NOTE\n GREEN_NOTE\n\n @@schema(\"real_estate\")\n}\n\nenum RealEstateQueryStatus {\n NEW\n IN_PROGRESS\n RESOLVED\n REJECTED\n CLOSED\n\n @@schema(\"real_estate\")\n}\n\ngenerator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"driverAdapters\", \"fullTextSearchPostgres\", \"multiSchema\"]\n output = \"../client\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n schemas = [\"core\", \"flat\", \"owner\", \"pg\", \"real_estate\"]\n}\n\n/// *\n/// * CoreUser\n/// * Represents a user in the system.\nmodel CoreUser {\n id Int @id @default(autoincrement())\n email String? @unique\n hash String?\n firstName String\n lastName String?\n countryCode CoreAllowedCountryCode @default(IN)\n phoneNumber String? @unique\n googleId String? @unique\n isActive Boolean @default(true)\n gender CoreGender?\n dateOfBirth DateTime?\n profilePicture String?\n resetToken String?\n resetTokenExpiry DateTime?\n authProvider CoreAuthenticationProvider @default(EMAIL)\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n passwordCreated Boolean @default(false)\n authoredLogs CoreBusinessLog[]\n authoredUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n uploadedDocs CoreDocument[] @relation(\"DocumentUser\")\n favorite CoreFavorite?\n invitesSent CoreInvite[] @relation(\"UserInvites\")\n posts CorePost[]\n refreshTokens CoreRefreshToken[]\n searchHistories CoreSearchHistory[]\n ownerBusinesses OwnerBusiness[] @relation(\"OwnerBusinessOwner\")\n realEstateCoreAsLeads RealEstateCoreLead? @relation(\"RealEstateCoreLeadToCoreUser\")\n realEstateQueries RealEstateQuery[]\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreFavorite\n/// * Represents a user's favorite businesses.\nmodel CoreFavorite {\n id Int @id @default(autoincrement())\n userId Int @unique\n favoriteBusinesses Int[]\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateFavorite RealEstateFavorite?\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusiness\n/// * Represents a business entity.\nmodel CoreBusiness {\n id Int @id @default(autoincrement())\n businessName String\n username String? @unique\n instagramHandle String?\n bio String?\n logoUrl String?\n manyChatId String?\n businessAddress String?\n businessContactNumber String?\n businessContactNumberCountryCode CoreAllowedCountryCode @default(IN)\n businessWebsite String?\n city CoreCity\n businessCategory CoreBusinessCategory\n instagramUrl String?\n twitterUrl String?\n youtubeUrl String?\n facebookUrl String?\n customLinks Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n deletedAt DateTime?\n isActive Boolean @default(true)\n businessLogs CoreBusinessLog[]\n businessUpdates CoreBusinessUpdate[]\n businessUsers CoreBusinessUser[]\n documents CoreDocument[]\n instagramAccount CoreInstagramAccount?\n invites CoreInvite[]\n payments CorePayment[]\n posts CorePost[]\n subscriptions CoreSubscription[]\n realEstateBusiness RealEstateBusiness? @relation(\"CoreBusinessToRealEstateBusiness\")\n areas CoreArea[] @relation(\"CoreBusinessToCoreArea\")\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUser\n/// * Represents the association between users and businesses.\nmodel CoreBusinessUser {\n id Int @id @default(autoincrement())\n userId Int\n businessId Int\n roleInBusiness CoreOrganizationRole @default(STAFF)\n permissions CorePermission[] @default([])\n isActive Boolean @default(true)\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n realEstateBusinessUser RealEstateBusinessUser? @relation(\"RealEstateBusinessUserToCoreBusinessUser\")\n\n @@unique([userId, businessId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInvite\n/// * Represents an invitation to join a business.\nmodel CoreInvite {\n id Int @id @default(autoincrement())\n businessId Int\n inviterId Int\n inviteeEmail String\n token String @unique\n expiresAt DateTime\n roleInBusiness CoreOrganizationRole\n permissions CorePermission[] @default([])\n businessPermissions Json?\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n inviter CoreUser @relation(\"UserInvites\", fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreRefreshToken\n/// * Represents a user's refresh token for authentication.\nmodel CoreRefreshToken {\n deviceId String @id\n deviceName String\n token String\n expiresAt DateTime\n userId Int\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSubscription\n/// * Represents a business subscription.\nmodel CoreSubscription {\n id Int @id @default(autoincrement())\n businessId Int\n type CoreSubscriptionType @default(BASIC)\n startDate DateTime @default(now())\n endDate DateTime?\n isActive Boolean @default(true)\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePayment\n/// * Represents a payment made by a business.\nmodel CorePayment {\n id Int @id @default(autoincrement())\n businessId Int\n amount Int\n status CorePaymentStatus @default(PENDING)\n createdAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreSearchHistory\n/// * Represents a user's search history.\nmodel CoreSearchHistory {\n id Int @id @default(autoincrement())\n userId Int\n query String\n searchedAt DateTime @default(now())\n user CoreUser @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId, searchedAt])\n @@schema(\"core\")\n}\n\n/// *\n/// * CorePost\n/// * Represents a post made by a user within a business.\nmodel CorePost {\n id Int @id @default(autoincrement())\n businessId Int\n instagramPostId String?\n caption String?\n imageUrl String?\n createdAt DateTime @default(now())\n userId Int?\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreInstagramAccount\n/// * Represents a business's Instagram account.\nmodel CoreInstagramAccount {\n id Int @id @default(autoincrement())\n businessId Int @unique\n instagramUserId String?\n accessToken String?\n connectedAt DateTime? @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreDocument\n/// * Represents documents uploaded by users or businesses.\nmodel CoreDocument {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int?\n docUrl String\n docName String?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(\"DocumentUser\", fields: [userId], references: [id])\n\n @@index([businessId, entityType, entityId])\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessLog\n/// * Represents logs related to business actions.\nmodel CoreBusinessLog {\n id BigInt @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String?\n entityId Int?\n action String\n oldData Json?\n newData Json?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreBusinessUpdate\n/// * Represents updates made to a business.\nmodel CoreBusinessUpdate {\n id Int @id @default(autoincrement())\n businessId Int\n userId Int?\n entityType String\n entityId Int\n content String\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n business CoreBusiness @relation(fields: [businessId], references: [id], onDelete: Cascade)\n user CoreUser? @relation(fields: [userId], references: [id])\n\n @@schema(\"core\")\n}\n\n/// *\n/// * CoreArea\n/// * This model serves as the GLOBAL concept of an area.\nmodel CoreArea {\n id Int @id @default(autoincrement())\n name String\n city CoreCity\n lat Float?\n lng Float?\n createdAt DateTime @default(now())\n updatedAt DateTime @default(now())\n realEstatePgLeads RealEstatePGLead[] @relation(\"CoreAreaToRealEstatePgLead\")\n realEstateAreas RealEstateArea? @relation(\"CoreAreaToRealEstateArea\")\n realEstateFlatLeads RealEstateFlatLead[] @relation(\"CoreAreaToRealEstateFlatLead\")\n businesses CoreBusiness[] @relation(\"CoreBusinessToCoreArea\")\n\n @@unique([name, city])\n @@schema(\"core\")\n}\n\nenum CoreGender {\n MALE\n FEMALE\n OTHER\n\n @@schema(\"core\")\n}\n\nenum CoreAuthenticationProvider {\n GOOGLE\n EMAIL\n\n @@schema(\"core\")\n}\n\nenum CoreAllowedCountryCode {\n IN\n\n @@schema(\"core\")\n}\n\nenum CoreOrganizationRole {\n OWNER\n ADMIN\n STAFF\n\n @@schema(\"core\")\n}\n\nenum CorePermission {\n VIEW_LOGS\n EDIT_LOGS\n DELETE_LOGS\n UNDO_CHANGES\n MANAGE_FINANCE\n VIEW_FINANCE\n CREATE_LEADS\n VIEW_LEADS\n EDIT_LEADS\n DELETE_LEADS\n MANAGE_BUSINESS\n CREATE_USERS\n EDIT_USERS\n VIEW_USERS\n DELETE_USERS\n ALL_PERMISSIONS\n\n @@schema(\"core\")\n}\n\nenum CorePaymentStatus {\n PENDING\n COMPLETED\n FAILED\n\n @@schema(\"core\")\n}\n\nenum CoreSubscriptionType {\n BASIC\n STANDARD\n PREMIUM\n\n @@schema(\"core\")\n}\n\nenum CoreCity {\n BANGALORE\n MUMBAI\n DELHI\n CHENNAI\n HYDERABAD\n\n @@schema(\"core\")\n}\n\nenum CoreBusinessCategory {\n REAL_ESTATE\n\n @@schema(\"core\")\n}\n",
|
|
1292
|
+
"inlineSchemaHash": "40596d771c2ecfcc6a7c17aaba6bb1892c64d6f98641d6bb0415b812130ee4c2",
|
|
1293
1293
|
"copyEngine": true
|
|
1294
1294
|
}
|
|
1295
1295
|
|
|
@@ -1298,8 +1298,8 @@ const fs = require('fs')
|
|
|
1298
1298
|
config.dirname = __dirname
|
|
1299
1299
|
if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) {
|
|
1300
1300
|
const alternativePaths = [
|
|
1301
|
-
"prisma/
|
|
1302
|
-
"
|
|
1301
|
+
"prisma/client",
|
|
1302
|
+
"client",
|
|
1303
1303
|
]
|
|
1304
1304
|
|
|
1305
1305
|
const alternativePath = alternativePaths.find((altPath) => {
|
|
@@ -1329,7 +1329,7 @@ Object.assign(exports, Prisma)
|
|
|
1329
1329
|
|
|
1330
1330
|
// file annotations for bundling tools to include these files
|
|
1331
1331
|
path.join(__dirname, "libquery_engine-darwin-arm64.dylib.node");
|
|
1332
|
-
path.join(process.cwd(), "prisma/
|
|
1332
|
+
path.join(process.cwd(), "prisma/client/libquery_engine-darwin-arm64.dylib.node")
|
|
1333
1333
|
// file annotations for bundling tools to include these files
|
|
1334
1334
|
path.join(__dirname, "schema.prisma");
|
|
1335
|
-
path.join(process.cwd(), "prisma/
|
|
1335
|
+
path.join(process.cwd(), "prisma/client/schema.prisma")
|