import {
	boolean,
	integer,
	pgTable,
	text,
	timestamp,
	uuid,
} from "drizzle-orm/pg-core";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import type z from "zod";

export const serverData = pgTable(
	"server_data",
	{
		server_id: uuid("id").defaultRandom().primaryKey(),
		name: text("name").notNull(),
		server: text("server"),
		plantToken: text("plant_token").notNull().unique(),
		idAddress: text("id_address"),
		greatPlainsPlantCode: text("great_plains_plant_code"),
		contactEmail: text("contact_email"),
		contactPhone: text("contact_phone"),
		active: boolean("active").default(true),
		serverLoc: text("server_loc"),
		lastUpdated: timestamp("last_updated", { withTimezone: true }).defaultNow(),
		buildNumber: integer("build_number"),
		isUpgrading: boolean("is_upgrading").default(false),
	},

	// (table) => [
	// 	// uniqueIndex('emailUniqueIndex').on(sql`lower(${table.email})`),
	// 	uniqueIndex("plant_token").on(table.plantToken),
	// ],
);

export const serverDataSchema = createSelectSchema(serverData);
export const newServerDataSchema = createInsertSchema(serverData);

export type ServerDataSchema = z.infer<typeof serverDataSchema>;
export type NewServerData = z.infer<typeof newServerDataSchema>;
