CREATE TABLE `conversations` (
	`id` int AUTO_INCREMENT NOT NULL,
	`sessionId` varchar(64) NOT NULL,
	`visitorName` varchar(255),
	`visitorEmail` varchar(320),
	`status` enum('active','escalated','resolved','closed') NOT NULL DEFAULT 'active',
	`assignedAgentId` int,
	`metadata` json,
	`createdAt` timestamp NOT NULL DEFAULT (now()),
	`updatedAt` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
	CONSTRAINT `conversations_id` PRIMARY KEY(`id`),
	CONSTRAINT `conversations_sessionId_unique` UNIQUE(`sessionId`)
);
--> statement-breakpoint
CREATE TABLE `messages` (
	`id` int AUTO_INCREMENT NOT NULL,
	`conversationId` int NOT NULL,
	`sender` enum('visitor','bot','agent') NOT NULL,
	`content` text NOT NULL,
	`metadata` json,
	`createdAt` timestamp NOT NULL DEFAULT (now()),
	CONSTRAINT `messages_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `workflow_edges` (
	`id` int AUTO_INCREMENT NOT NULL,
	`workflowId` varchar(64) NOT NULL,
	`sourceNodeId` varchar(64) NOT NULL,
	`targetNodeId` varchar(64) NOT NULL,
	`label` varchar(255),
	`condition` json,
	`createdAt` timestamp NOT NULL DEFAULT (now()),
	CONSTRAINT `workflow_edges_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `workflow_nodes` (
	`id` int AUTO_INCREMENT NOT NULL,
	`workflowId` varchar(64) NOT NULL,
	`nodeId` varchar(64) NOT NULL,
	`type` enum('greeting','intent','response','condition','escalation','action','end') NOT NULL,
	`label` varchar(255) NOT NULL,
	`config` json,
	`positionX` int NOT NULL DEFAULT 0,
	`positionY` int NOT NULL DEFAULT 0,
	`createdAt` timestamp NOT NULL DEFAULT (now()),
	`updatedAt` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
	CONSTRAINT `workflow_nodes_id` PRIMARY KEY(`id`)
);
