先写一部分shipdata

This commit is contained in:
shenjack 2024-09-05 23:44:33 +08:00
parent 69b75d8e8f
commit f71de5c149
Signed by: shenjack
GPG Key ID: 7B1134A979775551
4 changed files with 87 additions and 3 deletions

View File

@ -2,8 +2,10 @@ use sea_orm::{ConnectionTrait, DatabaseBackend, DatabaseConnection, Statement};
use crate::config::ConfigFile; use crate::config::ConfigFile;
pub mod main_data_table;
pub mod full_data_view; pub mod full_data_view;
pub mod long_data_table;
pub mod main_data_table;
pub mod ships_table;
pub mod db_names { pub mod db_names {
/// 主数据表 /// 主数据表
@ -18,7 +20,6 @@ pub mod db_names {
pub const SEA_ORM_TABLE: &str = "seaql_migrations"; pub const SEA_ORM_TABLE: &str = "seaql_migrations";
} }
pub const CURRENT_DB_VERSION: i32 = 1; pub const CURRENT_DB_VERSION: i32 = 1;
pub const TEXT_DATA_MAX_LEN: usize = 1024; pub const TEXT_DATA_MAX_LEN: usize = 1024;

View File

@ -0,0 +1,39 @@
use sea_orm::sea_query::{ColumnDef, ForeignKey, Table};
use sea_orm::{DatabaseBackend, DeriveIden, ForeignKeyAction, Iden, Statement};
use super::main_data_table::MainData;
pub fn long_data_table() -> Statement {
let mut table = Table::create();
table
.table(LongData::Table)
.if_not_exists()
.col(
ColumnDef::new(LongData::SaveId)
.integer()
.not_null()
.primary_key(),
)
.foreign_key(
ForeignKey::create()
.name(LongData::SaveId.to_string())
.to(MainData::Table, MainData::SaveId)
.from(LongData::Table, LongData::SaveId)
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade),
)
.col(ColumnDef::new(LongData::Len).big_integer().not_null())
.col(ColumnDef::new(LongData::Text).string().not_null());
DatabaseBackend::Postgres.build(&table)
}
#[derive(DeriveIden)]
pub enum LongData {
Table,
/// 存档 ID
SaveId,
/// 二次校验长度(?)
Len,
/// 1024 ~ 2MB 长度的数据
Text,
}

View File

@ -3,7 +3,7 @@ use sea_orm::{DatabaseBackend, DeriveIden, EnumIter, Iterable, Statement};
use super::TEXT_DATA_MAX_LEN; use super::TEXT_DATA_MAX_LEN;
pub async fn main_table() -> Statement { pub fn main_table() -> Statement {
let mut table = Table::create(); let mut table = Table::create();
table table
.table(MainData::Table) .table(MainData::Table)

View File

@ -0,0 +1,44 @@
use sea_orm::sea_query::{ColumnDef, ForeignKey, Table};
use sea_orm::{DatabaseBackend, DeriveIden, ForeignKeyAction, Iden, Statement};
use super::main_data_table::MainData;
pub fn ships_table() -> Statement {
let mut table = Table::create();
table
.table(Ships::Table)
.if_not_exists()
.col(
ColumnDef::new(Ships::SaveId)
.integer()
.not_null()
.primary_key(),
)
.foreign_key(
ForeignKey::create()
.name(Ships::SaveId.to_string())
.to(MainData::Table, MainData::SaveId)
.from(Ships::Table, Ships::SaveId)
.on_delete(ForeignKeyAction::Cascade)
.on_update(ForeignKeyAction::Cascade),
);
DatabaseBackend::Postgres.build(&table)
}
#[derive(DeriveIden)]
pub enum Ships {
Table,
/// 存档 ID
SaveId,
/// 解析过的 xml 数据
/// 这样就不用每次解析一遍了
XmlData,
/// 飞船质量
/// (按照原版数据计算, 经过比例缩放)
Mass,
/// 是否检查到了使用 mod 的迹象
/// 比如 多 pod 之类的
ModUsed,
/// 是否有 docxConnection (xml使用迹象)
DocxConnectionUsed,
}