ddon-server/deploy/postgresql/schema_postgres.sql

421 lines
20 KiB
MySQL
Raw Permalink Normal View History

2023-09-17 17:40:49 +02:00
CREATE TABLE IF NOT EXISTS setting
(
"key" VARCHAR(32) NOT NULL,
"value" TEXT NOT NULL,
PRIMARY KEY ("key")
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS account
(
"id" SERIAL PRIMARY KEY NOT NULL,
"name" TEXT NOT NULL,
"normal_name" TEXT NOT NULL,
"hash" TEXT NOT NULL,
"mail" TEXT NOT NULL,
"mail_verified" BOOLEAN NOT NULL,
"mail_verified_at" TIMESTAMP WITH TIME ZONE DEFAULT NULL,
"mail_token" TEXT DEFAULT NULL,
"password_token" TEXT DEFAULT NULL,
"login_token" TEXT DEFAULT NULL,
"login_token_created" TIMESTAMP WITH TIME ZONE DEFAULT NULL,
"state" INTEGER NOT NULL,
"last_login" TIMESTAMP WITH TIME ZONE DEFAULT NULL,
"created" TIMESTAMP WITH TIME ZONE NOT NULL,
CONSTRAINT uq_account_name UNIQUE ("name"),
CONSTRAINT uq_account_normal_name UNIQUE ("normal_name"),
CONSTRAINT uq_account_login_token UNIQUE ("login_token"),
CONSTRAINT uq_account_mail UNIQUE ("mail")
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_character_common
(
"character_common_id" SERIAL PRIMARY KEY NOT NULL,
"job" SMALLINT NOT NULL,
"hide_equip_head" BOOLEAN NOT NULL,
"hide_equip_lantern" BOOLEAN NOT NULL,
"jewelry_slot_num" SMALLINT NOT NULL
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_character
(
"character_id" SERIAL PRIMARY KEY NOT NULL,
"character_common_id" INTEGER NOT NULL,
"account_id" INTEGER NOT NULL,
"version" INTEGER NOT NULL,
"first_name" TEXT NOT NULL,
"last_name" TEXT NOT NULL,
"created" TIMESTAMP WITH TIME ZONE NOT NULL,
"my_pawn_slot_num" SMALLINT NOT NULL,
"rental_pawn_slot_num" SMALLINT NOT NULL,
"hide_equip_head_pawn" BOOLEAN NOT NULL,
"hide_equip_lantern_pawn" BOOLEAN NOT NULL,
"arisen_profile_share_range" SMALLINT NOT NULL,
CONSTRAINT fk_character_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE,
CONSTRAINT fk_character_account_id FOREIGN KEY ("account_id") REFERENCES account ("id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_pawn
(
"pawn_id" SERIAL PRIMARY KEY NOT NULL,
"character_common_id" INTEGER NOT NULL,
"character_id" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"hm_type" SMALLINT NOT NULL,
"pawn_type" SMALLINT NOT NULL,
CONSTRAINT fk_pawn_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE,
CONSTRAINT fk_character_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_edit_info
(
"character_common_id" INTEGER PRIMARY KEY NOT NULL,
"sex" SMALLINT NOT NULL,
"voice" SMALLINT NOT NULL,
"voice_pitch" SMALLINT NOT NULL,
"personality" SMALLINT NOT NULL,
"speech_freq" SMALLINT NOT NULL,
"body_type" SMALLINT NOT NULL,
"hair" SMALLINT NOT NULL,
"beard" SMALLINT NOT NULL,
"makeup" SMALLINT NOT NULL,
"scar" SMALLINT NOT NULL,
"eye_preset_no" SMALLINT NOT NULL,
"nose_preset_no" SMALLINT NOT NULL,
"mouth_preset_no" SMALLINT NOT NULL,
"eyebrow_tex_no" SMALLINT NOT NULL,
"color_skin" SMALLINT NOT NULL,
"color_hair" SMALLINT NOT NULL,
"color_beard" SMALLINT NOT NULL,
"color_eyebrow" SMALLINT NOT NULL,
"color_r_eye" SMALLINT NOT NULL,
"color_l_eye" SMALLINT NOT NULL,
"color_makeup" SMALLINT NOT NULL,
"sokutobu" SMALLINT NOT NULL,
"hitai" SMALLINT NOT NULL,
"mimi_jyouge" SMALLINT NOT NULL,
"kannkaku" SMALLINT NOT NULL,
"mabisasi_jyouge" SMALLINT NOT NULL,
"hanakuchi_jyouge" SMALLINT NOT NULL,
"ago_saki_haba" SMALLINT NOT NULL,
"ago_zengo" SMALLINT NOT NULL,
"ago_saki_jyouge" SMALLINT NOT NULL,
"hitomi_ookisa" SMALLINT NOT NULL,
"me_ookisa" SMALLINT NOT NULL,
"me_kaiten" SMALLINT NOT NULL,
"mayu_kaiten" SMALLINT NOT NULL,
"mimi_ookisa" SMALLINT NOT NULL,
"mimi_muki" SMALLINT NOT NULL,
"elf_mimi" SMALLINT NOT NULL,
"miken_takasa" SMALLINT NOT NULL,
"miken_haba" SMALLINT NOT NULL,
"hohobone_ryou" SMALLINT NOT NULL,
"hohobone_jyouge" SMALLINT NOT NULL,
"hohoniku" SMALLINT NOT NULL,
"erahone_jyouge" SMALLINT NOT NULL,
"erahone_haba" SMALLINT NOT NULL,
"hana_jyouge" SMALLINT NOT NULL,
"hana_haba" SMALLINT NOT NULL,
"hana_takasa" SMALLINT NOT NULL,
"hana_kakudo" SMALLINT NOT NULL,
"kuchi_haba" SMALLINT NOT NULL,
"kuchi_atsusa" SMALLINT NOT NULL,
"eyebrow_uv_offset_x" SMALLINT NOT NULL,
"eyebrow_uv_offset_y" SMALLINT NOT NULL,
"wrinkle" SMALLINT NOT NULL,
"wrinkle_albedo_blend_rate" SMALLINT NOT NULL,
"wrinkle_detail_normal_power" SMALLINT NOT NULL,
"muscle_albedo_blend_rate" SMALLINT NOT NULL,
"muscle_detail_normal_power" SMALLINT NOT NULL,
"height" SMALLINT NOT NULL,
"head_size" SMALLINT NOT NULL,
"neck_offset" SMALLINT NOT NULL,
"neck_scale" SMALLINT NOT NULL,
"upper_body_scale_x" SMALLINT NOT NULL,
"belly_size" SMALLINT NOT NULL,
"teat_scale" SMALLINT NOT NULL,
"tekubi_size" SMALLINT NOT NULL,
"koshi_offset" SMALLINT NOT NULL,
"koshi_size" SMALLINT NOT NULL,
"ankle_offset" SMALLINT NOT NULL,
"fat" SMALLINT NOT NULL,
"muscle" SMALLINT NOT NULL,
"motion_filter" SMALLINT NOT NULL,
CONSTRAINT fk_edit_info_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_status_info
(
"character_common_id" INTEGER PRIMARY KEY NOT NULL,
"hp" INTEGER NOT NULL,
"stamina" INTEGER NOT NULL,
"revive_point" SMALLINT NOT NULL,
"max_hp" INTEGER NOT NULL,
"max_stamina" INTEGER NOT NULL,
"white_hp" INTEGER NOT NULL,
"gain_hp" INTEGER NOT NULL,
"gain_stamina" INTEGER NOT NULL,
"gain_attack" INTEGER NOT NULL,
"gain_defense" INTEGER NOT NULL,
"gain_magic_attack" INTEGER NOT NULL,
"gain_magic_defense" INTEGER NOT NULL,
CONSTRAINT fk_status_info_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_character_matching_profile
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"entry_job" SMALLINT NOT NULL,
"entry_job_level" INTEGER NOT NULL,
"current_job" SMALLINT NOT NULL,
"current_job_level" INTEGER NOT NULL,
objective_type1 INTEGER NOT NULL,
objective_type2 INTEGER NOT NULL,
"play_style" INTEGER NOT NULL,
"comment" TEXT NOT NULL,
"is_join_party" BOOLEAN NOT NULL,
CONSTRAINT fk_matching_profile_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_character_arisen_profile
(
"character_id" INTEGER PRIMARY KEY NOT NULL,
"background_id" SMALLINT NOT NULL,
"title_uid" INTEGER NOT NULL,
"title_index" INTEGER NOT NULL,
"motion_id" SMALLINT NOT NULL,
"motion_frame_no" INTEGER NOT NULL,
CONSTRAINT fk_arisen_profile_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_character_job_data
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"exp" INTEGER NOT NULL,
"job_point" INTEGER NOT NULL,
"lv" INTEGER NOT NULL,
"atk" SMALLINT NOT NULL,
"def" SMALLINT NOT NULL,
"m_atk" SMALLINT NOT NULL,
"m_def" SMALLINT NOT NULL,
"strength" SMALLINT NOT NULL,
"down_power" SMALLINT NOT NULL,
"shake_power" SMALLINT NOT NULL,
"stun_power" SMALLINT NOT NULL,
"consitution" SMALLINT NOT NULL,
"guts" SMALLINT NOT NULL,
"fire_resist" SMALLINT NOT NULL,
"ice_resist" SMALLINT NOT NULL,
"thunder_resist" SMALLINT NOT NULL,
"holy_resist" SMALLINT NOT NULL,
"dark_resist" SMALLINT NOT NULL,
"spread_resist" SMALLINT NOT NULL,
"freeze_resist" SMALLINT NOT NULL,
"shock_resist" SMALLINT NOT NULL,
"absorb_resist" SMALLINT NOT NULL,
"dark_elm_resist" SMALLINT NOT NULL,
"poison_resist" SMALLINT NOT NULL,
"slow_resist" SMALLINT NOT NULL,
"sleep_resist" SMALLINT NOT NULL,
"stun_resist" SMALLINT NOT NULL,
"wet_resist" SMALLINT NOT NULL,
"oil_resist" SMALLINT NOT NULL,
"seal_resist" SMALLINT NOT NULL,
"curse_resist" SMALLINT NOT NULL,
"soft_resist" SMALLINT NOT NULL,
"stone_resist" SMALLINT NOT NULL,
"gold_resist" SMALLINT NOT NULL,
"fire_reduce_resist" SMALLINT NOT NULL,
"ice_reduce_resist" SMALLINT NOT NULL,
"thunder_reduce_resist" SMALLINT NOT NULL,
"holy_reduce_resist" SMALLINT NOT NULL,
"dark_reduce_resist" SMALLINT NOT NULL,
"atk_down_resist" SMALLINT NOT NULL,
"def_down_resist" SMALLINT NOT NULL,
"m_atk_down_resist" SMALLINT NOT NULL,
"m_def_down_resist" SMALLINT NOT NULL,
CONSTRAINT pk_character_job_data PRIMARY KEY (character_common_id, job),
CONSTRAINT fk_character_job_data_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_storage
(
"character_id" INTEGER NOT NULL,
"storage_type" SMALLINT NOT NULL,
"slot_max" SMALLINT NOT NULL,
"item_sort" BYTEA NOT NULL,
CONSTRAINT pk_ddon_storage PRIMARY KEY (character_id, storage_type),
CONSTRAINT fk_storage_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_wallet_point
(
"character_id" INTEGER NOT NULL,
"type" SMALLINT NOT NULL,
"value" INTEGER NOT NULL,
CONSTRAINT pk_ddon_wallet_point PRIMARY KEY (character_id, type),
CONSTRAINT fk_wallet_point_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_item
(
-- See Item.cs, uid is at most of size 8.
"uid" VARCHAR(8) NOT NULL,
"item_id" INTEGER NOT NULL,
unk3 SMALLINT NOT NULL,
"color" SMALLINT NOT NULL,
"plus_value" SMALLINT NOT NULL,
PRIMARY KEY ("uid")
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_storage_item
(
"item_uid" VARCHAR(8) NOT NULL,
"character_id" INTEGER NOT NULL,
"storage_type" SMALLINT NOT NULL,
"slot_no" SMALLINT NOT NULL,
"item_num" INTEGER NOT NULL,
CONSTRAINT pk_ddon_storage_item PRIMARY KEY (character_id, storage_type, slot_no),
CONSTRAINT fk_storage_item_item_uid FOREIGN KEY ("item_uid") REFERENCES ddon_item ("uid") ON DELETE CASCADE,
CONSTRAINT fk_storage_item_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_equip_item
(
"item_uid" VARCHAR(8) NOT NULL,
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"equip_type" SMALLINT NOT NULL,
"equip_slot" SMALLINT NOT NULL,
CONSTRAINT pk_ddon_equip_item PRIMARY KEY (character_common_id, job, equip_type, equip_slot),
CONSTRAINT fk_equip_item_item_uid FOREIGN KEY ("item_uid") REFERENCES ddon_item ("uid") ON DELETE CASCADE,
CONSTRAINT fk_equip_item_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_equip_job_item
(
"item_uid" VARCHAR(8) NOT NULL,
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"equip_slot" SMALLINT NOT NULL,
CONSTRAINT pk_ddon_equip_job_item PRIMARY KEY (character_common_id, job, equip_slot),
CONSTRAINT fk_equip_job_item_item_uid FOREIGN KEY ("item_uid") REFERENCES ddon_item ("uid") ON DELETE CASCADE,
CONSTRAINT fk_equip_job_item_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_normal_skill_param
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"skill_no" INTEGER NOT NULL,
"index" INTEGER NOT NULL,
"pre_skill_no" INTEGER NOT NULL,
CONSTRAINT pk_ddon_normal_skill_param PRIMARY KEY (character_common_id, job, skill_no),
CONSTRAINT fk_normal_skill_param_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_learned_custom_skill
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"skill_id" INTEGER NOT NULL,
"skill_lv" SMALLINT NOT NULL,
2023-09-17 17:40:49 +02:00
PRIMARY KEY (character_common_id, job, skill_id),
CONSTRAINT fk_learned_custom_skill_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_equipped_custom_skill
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"slot_no" SMALLINT NOT NULL,
"skill_id" INTEGER NOT NULL,
CONSTRAINT pk_ddon_equipped_custom_skill PRIMARY KEY (character_common_id, job, slot_no),
2023-09-17 17:40:49 +02:00
CONSTRAINT fk_equipped_custom_skill_character_common_id FOREIGN KEY (character_common_id, job, skill_id) REFERENCES ddon_learned_custom_skill (character_common_id, job, skill_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS ddon_learned_ability
(
"character_common_id" INTEGER NOT NULL,
"job" SMALLINT NOT NULL,
"ability_id" INTEGER NOT NULL,
"ability_lv" SMALLINT NOT NULL,
2023-09-17 17:40:49 +02:00
PRIMARY KEY (character_common_id, job, ability_id),
CONSTRAINT fk_learned_ability_character_common_id FOREIGN KEY ("character_common_id") REFERENCES ddon_character_common ("character_common_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_equipped_ability
(
"character_common_id" INTEGER NOT NULL,
"equipped_to_job" SMALLINT NOT NULL,
"job" SMALLINT NOT NULL,
"slot_no" SMALLINT NOT NULL,
"ability_id" INTEGER NOT NULL,
CONSTRAINT pk_ddon_equipped_ability PRIMARY KEY (character_common_id, equipped_to_job, slot_no),
2023-09-17 17:40:49 +02:00
CONSTRAINT fk_equipped_ability_character_common_id FOREIGN KEY (character_common_id, job, ability_id) REFERENCES ddon_learned_ability (character_common_id, job, ability_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS ddon_shortcut
(
"character_id" INTEGER NOT NULL,
"page_no" INTEGER NOT NULL,
"button_no" INTEGER NOT NULL,
"shortcut_id" INTEGER NOT NULL,
u32_data INTEGER NOT NULL,
f32_data INTEGER NOT NULL,
"exex_type" SMALLINT NOT NULL,
CONSTRAINT pk_ddon_shortcut PRIMARY KEY (character_id, page_no, button_no),
CONSTRAINT fk_shortcut_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_communication_shortcut
(
"character_id" INTEGER NOT NULL,
"page_no" INTEGER NOT NULL,
"button_no" INTEGER NOT NULL,
"type" SMALLINT NOT NULL,
"category" SMALLINT NOT NULL,
"id" INTEGER NOT NULL,
CONSTRAINT pk_ddon_communication_shortcut PRIMARY KEY (character_id, page_no, button_no),
CONSTRAINT fk_communication_shortcut_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_pawn_reaction
(
"pawn_id" INTEGER NOT NULL,
"reaction_type" SMALLINT NOT NULL,
"motion_no" INTEGER NOT NULL,
CONSTRAINT pk_ddon_pawn_reaction PRIMARY KEY (pawn_id, reaction_type),
CONSTRAINT fk_pawn_reaction_pawn_id FOREIGN KEY ("pawn_id") REFERENCES ddon_pawn ("pawn_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_sp_skill
(
"pawn_id" INTEGER NOT NULL,
"sp_skill_id" SMALLINT NOT NULL,
"sp_skill_lv" SMALLINT NOT NULL,
CONSTRAINT pk_ddon_sp_skill PRIMARY KEY ("pawn_id"),
CONSTRAINT fk_sp_skill_pawn_id FOREIGN KEY ("pawn_id") REFERENCES ddon_pawn ("pawn_id") ON DELETE CASCADE
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_game_token
(
"account_id" INTEGER PRIMARY KEY NOT NULL,
"character_id" INTEGER NOT NULL,
"token" TEXT NOT NULL,
"created" TIMESTAMP WITH TIME ZONE NOT NULL,
CONSTRAINT uq_game_token_token UNIQUE ("token"),
CONSTRAINT fk_game_token_account_id FOREIGN KEY ("account_id") REFERENCES account ("id"),
CONSTRAINT fk_game_token_character_id FOREIGN KEY ("character_id") REFERENCES ddon_character ("character_id")
2023-09-17 17:40:49 +02:00
);
CREATE TABLE IF NOT EXISTS ddon_connection
(
"server_id" INTEGER NOT NULL,
"account_id" INTEGER NOT NULL,
"type" INTEGER NOT NULL,
"created" TIMESTAMP WITH TIME ZONE NOT NULL,
2023-09-17 17:40:49 +02:00
CONSTRAINT uq_connection_server_id_account_id UNIQUE (server_id, account_id),
CONSTRAINT fk_connection_token_account_id FOREIGN KEY ("account_id") REFERENCES account ("id")
);