Add project fields
This commit is contained in:
parent
b722b21a75
commit
84b4c747f5
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
/target
|
||||
/migration/target
|
||||
/.idea
|
||||
/ignore
|
||||
|
||||
5
README.md
Normal file
5
README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Toggl Portal
|
||||
|
||||
## Purpose
|
||||
- Act as an authenticated client for other apps to use to access Toggl data in addition to caching this data for other
|
||||
data analysis purposes.
|
||||
2463
migration/Cargo.lock
generated
Normal file
2463
migration/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@ mod m20231101_172500_create_time_entry_table;
|
||||
mod m20231106_134950_create_clients;
|
||||
mod m20231106_195401_create_projects;
|
||||
mod m20231106_201029_add_time_entry_project_fk;
|
||||
mod m20240302_102418_update_project_table;
|
||||
|
||||
pub struct Migrator;
|
||||
|
||||
@ -15,6 +16,7 @@ impl MigratorTrait for Migrator {
|
||||
Box::new(m20231106_134950_create_clients::Migration),
|
||||
Box::new(m20231106_195401_create_projects::Migration),
|
||||
Box::new(m20231106_201029_add_time_entry_project_fk::Migration),
|
||||
Box::new(m20240302_102418_update_project_table::Migration),
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
60
migration/src/m20240302_102418_update_project_table.rs
Normal file
60
migration/src/m20240302_102418_update_project_table.rs
Normal file
@ -0,0 +1,60 @@
|
||||
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.alter_table(
|
||||
TableAlterStatement::new()
|
||||
.table(Project::Table)
|
||||
.add_column(ColumnDef::new(Project::Color).text())
|
||||
.add_column(ColumnDef::new(Project::ServerCreatedAt).timestamp_with_time_zone())
|
||||
.add_column(ColumnDef::new(Project::ServerUpdatedAt).timestamp_with_time_zone())
|
||||
.add_column(ColumnDef::new(Project::ServerDeletedAt).timestamp_with_time_zone())
|
||||
.to_owned()
|
||||
).await?;
|
||||
|
||||
manager.get_connection().execute_unprepared(
|
||||
r#"
|
||||
update "project"
|
||||
set "color" = raw_json ->> 'color',
|
||||
"server_created_at" = (raw_json ->> 'created_at') :: timestamptz,
|
||||
"server_updated_at" = (raw_json ->> 'at') :: timestamptz,
|
||||
"server_deleted_at" = (raw_json ->> 'server_deleted_at') :: timestamptz
|
||||
"#,
|
||||
).await?;
|
||||
|
||||
manager.alter_table(
|
||||
TableAlterStatement::new()
|
||||
.table(Project::Table)
|
||||
.modify_column(ColumnDef::new(Project::Color).not_null())
|
||||
.modify_column(ColumnDef::new(Project::ServerCreatedAt).not_null())
|
||||
.modify_column(ColumnDef::new(Project::ServerUpdatedAt).not_null())
|
||||
.to_owned()
|
||||
).await
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
manager.alter_table(
|
||||
TableAlterStatement::new()
|
||||
.table(Project::Table)
|
||||
.drop_column(Project::Color)
|
||||
.drop_column(Project::ServerCreatedAt)
|
||||
.drop_column(Project::ServerUpdatedAt)
|
||||
.drop_column(Project::ServerDeletedAt)
|
||||
.to_owned()
|
||||
).await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(DeriveIden)]
|
||||
enum Project {
|
||||
Table,
|
||||
Color,
|
||||
|
||||
ServerCreatedAt,
|
||||
ServerUpdatedAt,
|
||||
ServerDeletedAt,
|
||||
}
|
||||
@ -16,6 +16,11 @@ pub struct Model {
|
||||
pub active: bool,
|
||||
#[sea_orm(column_type = "JsonBinary")]
|
||||
pub raw_json: Json,
|
||||
#[sea_orm(column_type = "Text")]
|
||||
pub color: String,
|
||||
pub server_created_at: DateTimeWithTimeZone,
|
||||
pub server_updated_at: DateTimeWithTimeZone,
|
||||
pub server_deleted_at: Option<DateTimeWithTimeZone>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user