OneLauncher-Cracked/packages/migration/src/m20220101_000001_create_table.rs
2025-04-26 14:54:21 +02:00

276 lines
No EOL
9.6 KiB
Rust

use chrono::Utc;
use sea_orm_migration::prelude::*;
#[derive(DeriveMigrationName)]
pub struct Migration;
#[async_trait::async_trait]
impl MigrationTrait for Migration {
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
manager
.create_table(
Table::create()
.table(ClusterGroups::Table)
.if_not_exists()
.col(
ColumnDef::new(ClusterGroups::Id)
.integer()
.not_null()
.auto_increment()
.primary_key(),
)
.col(ColumnDef::new(ClusterGroups::Name).text().not_null())
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(JavaVersions::Table)
.if_not_exists()
.col(
ColumnDef::new(JavaVersions::Id)
.integer()
.not_null()
.auto_increment()
.primary_key(),
)
.col(ColumnDef::new(JavaVersions::MajorVersion).integer().not_null())
.col(ColumnDef::new(JavaVersions::VendorName).text().not_null())
.col(ColumnDef::new(JavaVersions::AbsolutePath).text().not_null())
.col(ColumnDef::new(JavaVersions::FullVersion).text().not_null())
.col(ColumnDef::new(JavaVersions::Arch).text().not_null())
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("java_versions_major_version_idx")
.table(JavaVersions::Table)
.col(JavaVersions::MajorVersion)
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(Packages::Table)
.if_not_exists()
.col(ColumnDef::new(Packages::Hash).text().not_null().primary_key())
.col(ColumnDef::new(Packages::FileName).text().not_null())
.col(ColumnDef::new(Packages::VersionId).text().not_null())
.col(ColumnDef::new(Packages::PublishedAt).date_time().not_null())
.col(ColumnDef::new(Packages::DisplayName).text().not_null())
.col(ColumnDef::new(Packages::DisplayVersion).text().not_null())
.col(ColumnDef::new(Packages::PackageType).integer().not_null())
.col(ColumnDef::new(Packages::Provider).integer().not_null())
.col(ColumnDef::new(Packages::PackageId).text().not_null())
.col(ColumnDef::new(Packages::McVersions).json().not_null())
.col(ColumnDef::new(Packages::McLoader).integer().not_null())
.col(ColumnDef::new(Packages::Icon).text().null())
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("packages_mc_loader_mc_versions_idx")
.table(Packages::Table)
.col(Packages::PackageType)
.col(Packages::McLoader)
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(SettingProfiles::Table)
.if_not_exists()
.col(ColumnDef::new(SettingProfiles::Name).text().not_null().primary_key())
.col(ColumnDef::new(SettingProfiles::JavaId).integer().null())
.col(ColumnDef::new(SettingProfiles::Res).json().null())
.col(ColumnDef::new(SettingProfiles::ForceFullscreen).boolean().null())
.col(ColumnDef::new(SettingProfiles::MemMax).integer().null())
.col(ColumnDef::new(SettingProfiles::LaunchArgs).text().null())
.col(ColumnDef::new(SettingProfiles::LaunchEnv).text().null())
.col(ColumnDef::new(SettingProfiles::HookPre).text().null())
.col(ColumnDef::new(SettingProfiles::HookWrapper).text().null())
.col(ColumnDef::new(SettingProfiles::HookPost).text().null())
.col(ColumnDef::new(SettingProfiles::OsExtra).json().null())
.foreign_key(
ForeignKey::create()
.from(SettingProfiles::Table, SettingProfiles::JavaId)
.to(JavaVersions::Table, JavaVersions::Id),
)
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(Clusters::Table)
.if_not_exists()
.col(
ColumnDef::new(Clusters::Id)
.integer()
.not_null()
.auto_increment()
.primary_key(),
)
.col(ColumnDef::new(Clusters::FolderName).text().not_null())
.col(ColumnDef::new(Clusters::Stage).integer().not_null().default(0))
.col(ColumnDef::new(Clusters::CreatedAt).date_time().not_null().default(Utc::now()))
.col(ColumnDef::new(Clusters::GroupId).integer().null())
.col(ColumnDef::new(Clusters::Name).text().not_null())
.col(ColumnDef::new(Clusters::McVersion).text().not_null())
.col(ColumnDef::new(Clusters::McLoader).integer().not_null())
.col(ColumnDef::new(Clusters::McLoaderVersion).text().null())
.col(ColumnDef::new(Clusters::LastPlayed).date_time().null())
.col(ColumnDef::new(Clusters::OverallPlayed).integer().null())
.col(ColumnDef::new(Clusters::IconUrl).text().null())
.col(ColumnDef::new(Clusters::SettingProfileName).text().null())
.col(ColumnDef::new(Clusters::LinkedPackId).text().null())
.col(ColumnDef::new(Clusters::LinkedPackVersion).text().null())
.foreign_key(
ForeignKey::create()
.from(Clusters::Table, Clusters::GroupId)
.to(ClusterGroups::Table, ClusterGroups::Id),
)
.foreign_key(
ForeignKey::create()
.from(Clusters::Table, Clusters::SettingProfileName)
.to(SettingProfiles::Table, SettingProfiles::Name),
)
.to_owned(),
)
.await?;
manager
.create_index(
Index::create()
.name("clusters_path_idx")
.table(Clusters::Table)
.col(Clusters::FolderName)
.to_owned(),
)
.await?;
manager
.create_table(
Table::create()
.table(ClusterPackages::Table)
.if_not_exists()
.col(ColumnDef::new(ClusterPackages::ClusterId).integer().not_null())
.col(ColumnDef::new(ClusterPackages::PackageHash).text().not_null())
.primary_key(
Index::create()
.col(ClusterPackages::ClusterId)
.col(ClusterPackages::PackageHash)
.primary(),
)
.foreign_key(
ForeignKey::create()
.from(ClusterPackages::Table, ClusterPackages::ClusterId)
.to(Clusters::Table, Clusters::Id),
)
.foreign_key(
ForeignKey::create()
.from(ClusterPackages::Table, ClusterPackages::PackageHash)
.to(Packages::Table, Packages::Hash),
)
.to_owned(),
)
.await?;
Ok(())
}
async fn down(&self, _manager: &SchemaManager) -> Result<(), DbErr> {
Err(DbErr::Migration("no rollback available".to_owned()))
}
}
#[derive(Iden)]
enum ClusterGroups {
Table,
Id,
Name,
}
#[derive(Iden)]
enum JavaVersions {
Table,
Id,
MajorVersion,
VendorName,
AbsolutePath,
FullVersion,
Arch,
}
#[derive(Iden)]
enum Packages {
Table,
Hash,
FileName,
VersionId,
PublishedAt,
DisplayName,
DisplayVersion,
PackageType,
Provider,
PackageId,
McVersions,
McLoader,
Icon,
}
#[derive(Iden)]
enum SettingProfiles {
Table,
Name,
JavaId,
Res,
ForceFullscreen,
MemMax,
LaunchArgs,
LaunchEnv,
HookPre,
HookWrapper,
HookPost,
OsExtra,
}
#[derive(Iden)]
enum Clusters {
Table,
Id,
FolderName,
Stage,
CreatedAt,
GroupId,
Name,
McVersion,
McLoader,
McLoaderVersion,
LastPlayed,
OverallPlayed,
IconUrl,
SettingProfileName,
LinkedPackId,
LinkedPackVersion,
}
#[derive(Iden)]
enum ClusterPackages {
Table,
ClusterId,
PackageHash,
}