import { pgTable, text, serial, timestamp, boolean, integer, doublePrecision } from "drizzle-orm/pg-core";
import { createInsertSchema } from "drizzle-zod";
import { z } from "zod/v4";

export const apartmentsTable = pgTable("apartments", {
  id: serial("id").primaryKey(),
  name: text("name").notNull(),
  slug: text("slug").notNull().unique(),
  city: text("city").notNull(),
  state: text("state").notNull().default(""),
  address: text("address").notNull().default(""),
  description: text("description").notNull().default(""),
  pricePerNight: doublePrecision("price_per_night").notNull(),
  bedrooms: integer("bedrooms").notNull().default(1),
  bathrooms: integer("bathrooms").notNull().default(1),
  maxGuests: integer("max_guests").notNull().default(2),
  amenities: text("amenities").notNull().default(""),
  images: text("images").notNull().default("[]"),
  featured: boolean("featured").notNull().default(false),
  available: boolean("available").notNull().default(true),
  rating: doublePrecision("rating"),
  reviewCount: integer("review_count").notNull().default(0),
  createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
  updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow().$onUpdate(() => new Date()),
});

export const insertApartmentSchema = createInsertSchema(apartmentsTable).omit({ id: true, createdAt: true, updatedAt: true });
export type InsertApartment = z.infer<typeof insertApartmentSchema>;
export type Apartment = typeof apartmentsTable.$inferSelect;
