CREATE TABLE `characters` (
`character_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`user_id` text NOT NULL,
`character_name` text NOT NULL,
`background` text,
`class` text,
`level` integer DEFAULT 1,
`species` text,
`subclass` text,
`xp` integer DEFAULT 0,
`armor_class` integer,
`initiative_modifier` integer,
`speed` integer,
`character_size` text,
`passive_perception` integer,
`proficiency_bonus` integer,
`max_hit_points` integer,
`current_hit_points` integer,
`temp_hit_points` integer DEFAULT 0,
`death_save_successes` integer DEFAULT 0,
`death_save_failures` integer DEFAULT 0,
`heroic_inspiration` integer DEFAULT 0,
`strength_score` integer,
`strength_modifier` integer,
`dexterity_score` integer,
`dexterity_modifier` integer,
`constitution_score` integer,
`constitution_modifier` integer,
`intelligence_score` integer,
`intelligence_modifier` integer,
`wisdom_score` integer,
`wisdom_modifier` integer,
`charisma_score` integer,
`charisma_modifier` integer,
`str_save_proficiency` integer DEFAULT 0,
`dex_save_proficiency` integer DEFAULT 0,
`con_save_proficiency` integer DEFAULT 0,
`int_save_proficiency` integer DEFAULT 0,
`wis_save_proficiency` integer DEFAULT 0,
`cha_save_proficiency` integer DEFAULT 0,
`athletics_proficiency` integer DEFAULT 0,
`acrobatics_proficiency` integer DEFAULT 0,
`sleight_of_hand_proficiency` integer DEFAULT 0,
`stealth_proficiency` integer DEFAULT 0,
`arcana_proficiency` integer DEFAULT 0,
`history_proficiency` integer DEFAULT 0,
`investigation_proficiency` integer DEFAULT 0,
`nature_proficiency` integer DEFAULT 0,
`religion_proficiency` integer DEFAULT 0,
`animal_handling_proficiency` integer DEFAULT 0,
`insight_proficiency` integer DEFAULT 0,
`medicine_proficiency` integer DEFAULT 0,
`perception_proficiency` integer DEFAULT 0,
`survival_proficiency` integer DEFAULT 0,
`deception_proficiency` integer DEFAULT 0,
`intimidation_proficiency` integer DEFAULT 0,
`performance_proficiency` integer DEFAULT 0,
`persuasion_proficiency` integer DEFAULT 0,
`light_armor_training` integer DEFAULT 0,
`medium_armor_training` integer DEFAULT 0,
`heavy_armor_training` integer DEFAULT 0,
`shields_training` integer DEFAULT 0,
`class_features` text,
`species_traits` text,
`feats` text,
`spellcasting_ability` text,
`spellcasting_modifier` integer,
`spell_save_dc` integer,
`spell_attack_bonus` integer,
`level_1_slots_total` integer DEFAULT 0,
`level_1_slots_expended` integer DEFAULT 0,
`level_2_slots_total` integer DEFAULT 0,
`level_2_slots_expended` integer DEFAULT 0,
`level_3_slots_total` integer DEFAULT 0,
`level_3_slots_expended` integer DEFAULT 0,
`level_4_slots_total` integer DEFAULT 0,
`level_4_slots_expended` integer DEFAULT 0,
`level_5_slots_total` integer DEFAULT 0,
`level_5_slots_expended` integer DEFAULT 0,
`level_6_slots_total` integer DEFAULT 0,
`level_6_slots_expended` integer DEFAULT 0,
`level_7_slots_total` integer DEFAULT 0,
`level_7_slots_expended` integer DEFAULT 0,
`level_8_slots_total` integer DEFAULT 0,
`level_8_slots_expended` integer DEFAULT 0,
`level_9_slots_total` integer DEFAULT 0,
`level_9_slots_expended` integer DEFAULT 0,
`alignment` text,
`languages` text,
`appearance` text,
`backstory_personality` text,
`copper_pieces` integer DEFAULT 0,
`silver_pieces` integer DEFAULT 0,
`electrum_pieces` integer DEFAULT 0,
`gold_pieces` integer DEFAULT 0,
`platinum_pieces` integer DEFAULT 0,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `equipment` (
`equipment_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`character_id` integer NOT NULL,
`item_name` text NOT NULL,
`quantity` integer DEFAULT 1,
`description` text,
`is_equipped` integer DEFAULT 0,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`character_id`) REFERENCES `characters`(`character_id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `magic_items` (
`magic_item_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`character_id` integer NOT NULL,
`item_name` text NOT NULL,
`is_attuned` integer DEFAULT 0,
`is_equipped` integer DEFAULT 0,
`description` text,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`character_id`) REFERENCES `characters`(`character_id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `spells` (
`spell_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`character_id` integer NOT NULL,
`spell_level` integer NOT NULL,
`spell_name` text NOT NULL,
`casting_time` text,
`spell_range` text,
`is_concentration` integer DEFAULT 0,
`is_ritual` integer DEFAULT 0,
`requires_material` integer DEFAULT 0,
`notes` text,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`character_id`) REFERENCES `characters`(`character_id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `tool_proficiencies` (
`proficiency_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`character_id` integer NOT NULL,
`tool_name` text NOT NULL,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`character_id`) REFERENCES `characters`(`character_id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `weapon_proficiencies` (
`proficiency_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`character_id` integer NOT NULL,
`weapon_name` text NOT NULL,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`character_id`) REFERENCES `characters`(`character_id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `weapons` (
`weapon_id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`character_id` integer NOT NULL,
`weapon_name` text NOT NULL,
`attack_bonus` integer,
`damage_dice` text,
`damage_type` text,
`notes` text,
`is_equipped` integer DEFAULT 0,
`created_at` text DEFAULT CURRENT_TIMESTAMP,
`updated_at` text DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`character_id`) REFERENCES `characters`(`character_id`) ON UPDATE no action ON DELETE cascade
);