fix: fix migrations
This commit is contained in:
parent
b5b3c77ba3
commit
5155c59293
@ -318,7 +318,7 @@ pub trait CustomSchemaManagerExt {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn create_foreign_key_if_not_exists<
|
async fn create_foreign_key_if_not_exists<
|
||||||
T: IntoIden + 'static + Send,
|
T: ToString + 'static + Send,
|
||||||
S: IntoIden + 'static + Send,
|
S: IntoIden + 'static + Send,
|
||||||
>(
|
>(
|
||||||
&self,
|
&self,
|
||||||
@ -328,7 +328,7 @@ pub trait CustomSchemaManagerExt {
|
|||||||
) -> Result<(), DbErr>;
|
) -> Result<(), DbErr>;
|
||||||
|
|
||||||
async fn drop_foreign_key_if_exists<
|
async fn drop_foreign_key_if_exists<
|
||||||
T: IntoIden + 'static + Send,
|
T: ToString + 'static + Send,
|
||||||
S: IntoIden + 'static + Send,
|
S: IntoIden + 'static + Send,
|
||||||
>(
|
>(
|
||||||
&self,
|
&self,
|
||||||
@ -424,7 +424,7 @@ impl CustomSchemaManagerExt for SchemaManager<'_> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn create_foreign_key_if_not_exists<
|
async fn create_foreign_key_if_not_exists<
|
||||||
T: IntoIden + 'static + Send,
|
T: ToString + 'static + Send,
|
||||||
S: IntoIden + 'static + Send,
|
S: IntoIden + 'static + Send,
|
||||||
>(
|
>(
|
||||||
&self,
|
&self,
|
||||||
@ -432,7 +432,7 @@ impl CustomSchemaManagerExt for SchemaManager<'_> {
|
|||||||
foreign_key: S,
|
foreign_key: S,
|
||||||
stmt: ForeignKeyCreateStatement,
|
stmt: ForeignKeyCreateStatement,
|
||||||
) -> Result<(), DbErr> {
|
) -> Result<(), DbErr> {
|
||||||
let from_tbl = from_tbl.into_iden().to_string();
|
let from_tbl = from_tbl.to_string();
|
||||||
let foreign_key = foreign_key.into_iden().to_string();
|
let foreign_key = foreign_key.into_iden().to_string();
|
||||||
let db = self
|
let db = self
|
||||||
.get_connection()
|
.get_connection()
|
||||||
@ -442,7 +442,7 @@ impl CustomSchemaManagerExt for SchemaManager<'_> {
|
|||||||
"
|
"
|
||||||
SELECT CONSTRAINT_NAME
|
SELECT CONSTRAINT_NAME
|
||||||
FROM information_schema.KEY_COLUMN_USAGE
|
FROM information_schema.KEY_COLUMN_USAGE
|
||||||
WHERE TABLE_NAME = '{from_tbl}' AND CONSTRAINT_NAME = '{foreign_key}'
|
WHERE TABLE_NAME = {from_tbl} AND CONSTRAINT_NAME = '{foreign_key}'
|
||||||
"
|
"
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
@ -457,7 +457,7 @@ impl CustomSchemaManagerExt for SchemaManager<'_> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn drop_foreign_key_if_exists<
|
async fn drop_foreign_key_if_exists<
|
||||||
T: IntoIden + 'static + Send,
|
T: ToString + 'static + Send,
|
||||||
S: IntoIden + 'static + Send,
|
S: IntoIden + 'static + Send,
|
||||||
>(
|
>(
|
||||||
&self,
|
&self,
|
||||||
@ -465,7 +465,7 @@ impl CustomSchemaManagerExt for SchemaManager<'_> {
|
|||||||
foreign_key: S,
|
foreign_key: S,
|
||||||
stmt: ForeignKeyDropStatement,
|
stmt: ForeignKeyDropStatement,
|
||||||
) -> Result<(), DbErr> {
|
) -> Result<(), DbErr> {
|
||||||
let from_tbl = from_tbl.into_iden().to_string();
|
let from_tbl = from_tbl.to_string();
|
||||||
let foreign_key = foreign_key.into_iden().to_string();
|
let foreign_key = foreign_key.into_iden().to_string();
|
||||||
let db = self
|
let db = self
|
||||||
.get_connection()
|
.get_connection()
|
||||||
@ -475,7 +475,7 @@ impl CustomSchemaManagerExt for SchemaManager<'_> {
|
|||||||
"
|
"
|
||||||
SELECT CONSTRAINT_NAME
|
SELECT CONSTRAINT_NAME
|
||||||
FROM information_schema.KEY_COLUMN_USAGE
|
FROM information_schema.KEY_COLUMN_USAGE
|
||||||
WHERE TABLE_NAME = '{from_tbl}' AND CONSTRAINT_NAME = '{foreign_key}'
|
WHERE TABLE_NAME = {from_tbl} AND CONSTRAINT_NAME = '{foreign_key}'
|
||||||
"
|
"
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
|
@ -78,7 +78,7 @@ impl MigrationTrait for Migration {
|
|||||||
|
|
||||||
manager
|
manager
|
||||||
.create_foreign_key_if_not_exists(
|
.create_foreign_key_if_not_exists(
|
||||||
Subscriptions::Table,
|
Subscriptions::Table.to_string(),
|
||||||
"fk_subscriptions_credential_id",
|
"fk_subscriptions_credential_id",
|
||||||
ForeignKeyCreateStatement::new()
|
ForeignKeyCreateStatement::new()
|
||||||
.name("fk_subscriptions_credential_id")
|
.name("fk_subscriptions_credential_id")
|
||||||
|
@ -61,7 +61,7 @@ impl MigrationTrait for Migration {
|
|||||||
)).await?;
|
)).await?;
|
||||||
|
|
||||||
db.execute_unprepared(&format!(
|
db.execute_unprepared(&format!(
|
||||||
r#"CREATE OR REPLACE FUNCTION {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}() RETURNS trigger AS $$
|
r#"CREATE OR REPLACE FUNCTION {apalis_schema}.{SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}() RETURNS trigger AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
new_job_subscriber_id integer;
|
new_job_subscriber_id integer;
|
||||||
new_job_subscription_id integer;
|
new_job_subscription_id integer;
|
||||||
@ -70,18 +70,19 @@ impl MigrationTrait for Migration {
|
|||||||
new_job_subscriber_id = (NEW.{job} ->> '{subscriber_id}')::integer;
|
new_job_subscriber_id = (NEW.{job} ->> '{subscriber_id}')::integer;
|
||||||
new_job_subscription_id = (NEW.{job} ->> '{subscription_id}')::integer;
|
new_job_subscription_id = (NEW.{job} ->> '{subscription_id}')::integer;
|
||||||
new_job_task_type = (NEW.{job} ->> '{task_type}')::text;
|
new_job_task_type = (NEW.{job} ->> '{task_type}')::text;
|
||||||
IF new_job_subscriber_id != (OLD.{job} ->> '{subscriber_id}')::integer AND new_job_subscriber_id != NEW.{subscriber_id} THEN
|
IF new_job_subscriber_id IS DISTINCT FROM (OLD.{job} ->> '{subscriber_id}')::integer AND new_job_subscriber_id IS DISTINCT FROM NEW.{subscriber_id} THEN
|
||||||
NEW.{subscriber_id} = new_job_subscriber_id;
|
NEW.{subscriber_id} = new_job_subscriber_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_subscription_id != (OLD.{job} ->> '{subscription_id}')::integer AND new_job_subscription_id != NEW.{subscription_id} THEN
|
IF new_job_subscription_id IS DISTINCT FROM (OLD.{job} ->> '{subscription_id}')::integer AND new_job_subscription_id IS DISTINCT FROM NEW.{subscription_id} THEN
|
||||||
NEW.{subscription_id} = new_job_subscription_id;
|
NEW.{subscription_id} = new_job_subscription_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_task_type != (OLD.{job} ->> '{task_type}')::text AND new_job_task_type != NEW.{task_type} THEN
|
IF new_job_task_type IS DISTINCT FROM (OLD.{job} ->> '{task_type}')::text AND new_job_task_type IS DISTINCT FROM NEW.{task_type} THEN
|
||||||
NEW.{task_type} = new_job_task_type;
|
NEW.{task_type} = new_job_task_type;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;"#,
|
$$ LANGUAGE plpgsql;"#,
|
||||||
|
apalis_schema = ApalisSchema::Schema.to_string(),
|
||||||
job = ApalisJobs::Job.to_string(),
|
job = ApalisJobs::Job.to_string(),
|
||||||
subscriber_id = ApalisJobs::SubscriberId.to_string(),
|
subscriber_id = ApalisJobs::SubscriberId.to_string(),
|
||||||
subscription_id = ApalisJobs::SubscriptionId.to_string(),
|
subscription_id = ApalisJobs::SubscriptionId.to_string(),
|
||||||
@ -92,7 +93,7 @@ impl MigrationTrait for Migration {
|
|||||||
r#"CREATE OR REPLACE TRIGGER {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_TRIGGER_NAME}
|
r#"CREATE OR REPLACE TRIGGER {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_TRIGGER_NAME}
|
||||||
BEFORE INSERT OR UPDATE ON {apalis_schema}.{apalis_table}
|
BEFORE INSERT OR UPDATE ON {apalis_schema}.{apalis_table}
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
EXECUTE FUNCTION {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}();"#,
|
EXECUTE FUNCTION {apalis_schema}.{SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}();"#,
|
||||||
apalis_schema = ApalisSchema::Schema.to_string(),
|
apalis_schema = ApalisSchema::Schema.to_string(),
|
||||||
apalis_table = ApalisJobs::Table.to_string()
|
apalis_table = ApalisJobs::Table.to_string()
|
||||||
))
|
))
|
||||||
@ -198,7 +199,8 @@ impl MigrationTrait for Migration {
|
|||||||
)).await?;
|
)).await?;
|
||||||
|
|
||||||
db.execute_unprepared(&format!(
|
db.execute_unprepared(&format!(
|
||||||
r#"DROP FUNCTION IF EXISTS {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}()"#,
|
r#"DROP FUNCTION IF EXISTS {apalis_schema}.{SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}()"#,
|
||||||
|
apalis_schema = ApalisSchema::Schema.to_string(),
|
||||||
))
|
))
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ pub struct Migration;
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl MigrationTrait for Migration {
|
impl MigrationTrait for Migration {
|
||||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
let db = manager.get_connection();
|
||||||
|
|
||||||
create_postgres_enum_for_active_enum!(manager, EpisodeTypeEnum, EpisodeType::Mikan).await?;
|
create_postgres_enum_for_active_enum!(manager, EpisodeTypeEnum, EpisodeType::Mikan).await?;
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -29,11 +31,17 @@ impl MigrationTrait for Migration {
|
|||||||
BangumiTypeEnum,
|
BangumiTypeEnum,
|
||||||
BangumiType::iden_values(),
|
BangumiType::iden_values(),
|
||||||
))
|
))
|
||||||
.drop_column(Bangumi::SavePath)
|
|
||||||
.to_owned(),
|
.to_owned(),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
db.execute_unprepared(&format!(
|
||||||
|
r#"ALTER TABLE {bangumi} DROP COLUMN IF EXISTS {save_path}"#,
|
||||||
|
bangumi = Bangumi::Table.to_string(),
|
||||||
|
save_path = Bangumi::SavePath.to_string(),
|
||||||
|
))
|
||||||
|
.await?;
|
||||||
|
|
||||||
manager
|
manager
|
||||||
.exec_stmt(
|
.exec_stmt(
|
||||||
UpdateStatement::new()
|
UpdateStatement::new()
|
||||||
@ -83,11 +91,17 @@ impl MigrationTrait for Migration {
|
|||||||
.add_column_if_not_exists(big_integer_null(
|
.add_column_if_not_exists(big_integer_null(
|
||||||
Episodes::EnclosureContentLength,
|
Episodes::EnclosureContentLength,
|
||||||
))
|
))
|
||||||
.drop_column(Episodes::SavePath)
|
|
||||||
.to_owned(),
|
.to_owned(),
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
db.execute_unprepared(&format!(
|
||||||
|
r#"ALTER TABLE {episodes} DROP COLUMN IF EXISTS {save_path}"#,
|
||||||
|
episodes = Episodes::Table.to_string(),
|
||||||
|
save_path = Episodes::SavePath.to_string(),
|
||||||
|
))
|
||||||
|
.await?;
|
||||||
|
|
||||||
manager
|
manager
|
||||||
.exec_stmt(
|
.exec_stmt(
|
||||||
UpdateStatement::new()
|
UpdateStatement::new()
|
||||||
@ -120,10 +134,34 @@ impl MigrationTrait for Migration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(Bangumi::Table)
|
||||||
|
.add_column_if_not_exists(text_null(Bangumi::SavePath))
|
||||||
|
.drop_column(Bangumi::BangumiType)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
manager
|
manager
|
||||||
.drop_postgres_enum_for_active_enum(BangumiTypeEnum)
|
.drop_postgres_enum_for_active_enum(BangumiTypeEnum)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
manager
|
||||||
|
.alter_table(
|
||||||
|
Table::alter()
|
||||||
|
.table(Episodes::Table)
|
||||||
|
.add_column_if_not_exists(text_null(Episodes::SavePath))
|
||||||
|
.drop_column(Episodes::EpisodeType)
|
||||||
|
.drop_column(Episodes::EnclosureMagnetLink)
|
||||||
|
.drop_column(Episodes::EnclosureTorrentLink)
|
||||||
|
.drop_column(Episodes::EnclosurePubDate)
|
||||||
|
.drop_column(Episodes::EnclosureContentLength)
|
||||||
|
.to_owned(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
manager
|
manager
|
||||||
.drop_postgres_enum_for_active_enum(EpisodeTypeEnum)
|
.drop_postgres_enum_for_active_enum(EpisodeTypeEnum)
|
||||||
.await?;
|
.await?;
|
||||||
|
@ -105,13 +105,13 @@ impl MigrationTrait for Migration {
|
|||||||
new_subscriber_task_subscriber_id = (NEW.{subscriber_task_cron} ->> 'subscriber_id')::integer;
|
new_subscriber_task_subscriber_id = (NEW.{subscriber_task_cron} ->> 'subscriber_id')::integer;
|
||||||
new_subscriber_task_subscription_id = (NEW.{subscriber_task_cron} ->> 'subscription_id')::integer;
|
new_subscriber_task_subscription_id = (NEW.{subscriber_task_cron} ->> 'subscription_id')::integer;
|
||||||
new_system_task_subscriber_id = (NEW.{system_task_cron} ->> 'subscriber_id')::integer;
|
new_system_task_subscriber_id = (NEW.{system_task_cron} ->> 'subscriber_id')::integer;
|
||||||
IF new_subscriber_task_subscriber_id != (OLD.{subscriber_task_cron} ->> 'subscriber_id')::integer AND new_subscriber_task_subscriber_id != NEW.{subscriber_id} THEN
|
IF new_subscriber_task_subscriber_id IS DISTINCT FROM (OLD.{subscriber_task_cron} ->> 'subscriber_id')::integer AND new_subscriber_task_subscriber_id IS DISTINCT FROM NEW.{subscriber_id} THEN
|
||||||
NEW.{subscriber_id} = new_subscriber_task_subscriber_id;
|
NEW.{subscriber_id} = new_subscriber_task_subscriber_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_subscriber_task_subscription_id != (OLD.{subscriber_task_cron} ->> 'subscription_id')::integer AND new_subscriber_task_subscription_id != NEW.{subscription_id} THEN
|
IF new_subscriber_task_subscription_id IS DISTINCT FROM (OLD.{subscriber_task_cron} ->> 'subscription_id')::integer AND new_subscriber_task_subscription_id IS DISTINCT FROM NEW.{subscription_id} THEN
|
||||||
NEW.{subscription_id} = new_subscriber_task_subscription_id;
|
NEW.{subscription_id} = new_subscriber_task_subscription_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_system_task_subscriber_id != (OLD.{system_task_cron} ->> 'subscriber_id')::integer AND new_system_task_subscriber_id != NEW.{subscriber_id} THEN
|
IF new_system_task_subscriber_id IS DISTINCT FROM (OLD.{system_task_cron} ->> 'subscriber_id')::integer AND new_system_task_subscriber_id IS DISTINCT FROM NEW.{subscriber_id} THEN
|
||||||
NEW.{subscriber_id} = new_system_task_subscriber_id;
|
NEW.{subscriber_id} = new_system_task_subscriber_id;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
@ -154,8 +154,8 @@ impl MigrationTrait for Migration {
|
|||||||
OLD.{next_run} IS NULL
|
OLD.{next_run} IS NULL
|
||||||
OR OLD.{next_run} > CURRENT_TIMESTAMP
|
OR OLD.{next_run} > CURRENT_TIMESTAMP
|
||||||
OR OLD.{enabled} = false
|
OR OLD.{enabled} = false
|
||||||
OR OLD.{status} != '{pending}'
|
OR OLD.{status} IS DISTINCT FROM '{pending}'
|
||||||
OR OLD.{attempts} != NEW.{attempts}
|
OR OLD.{attempts} IS DISTINCT FROM NEW.{attempts}
|
||||||
)
|
)
|
||||||
THEN
|
THEN
|
||||||
PERFORM pg_notify('{CRON_DUE_EVENT}', row_to_json(NEW)::text);
|
PERFORM pg_notify('{CRON_DUE_EVENT}', row_to_json(NEW)::text);
|
||||||
@ -341,7 +341,7 @@ impl MigrationTrait for Migration {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
db.execute_unprepared(&format!(
|
db.execute_unprepared(&format!(
|
||||||
r#"CREATE OR REPLACE FUNCTION {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}() RETURNS trigger AS $$
|
r#"CREATE OR REPLACE FUNCTION {apalis_schema}.{SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}() RETURNS trigger AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
new_job_subscriber_id integer;
|
new_job_subscriber_id integer;
|
||||||
new_job_subscription_id integer;
|
new_job_subscription_id integer;
|
||||||
@ -352,21 +352,22 @@ impl MigrationTrait for Migration {
|
|||||||
new_job_subscription_id = (NEW.{job} ->> '{subscription_id}')::integer;
|
new_job_subscription_id = (NEW.{job} ->> '{subscription_id}')::integer;
|
||||||
new_job_cron_id = (NEW.{job} ->> '{cron_id}')::integer;
|
new_job_cron_id = (NEW.{job} ->> '{cron_id}')::integer;
|
||||||
new_job_task_type = (NEW.{job} ->> '{task_type}')::text;
|
new_job_task_type = (NEW.{job} ->> '{task_type}')::text;
|
||||||
IF new_job_subscriber_id != (OLD.{job} ->> '{subscriber_id}')::integer AND new_job_subscriber_id != NEW.{subscriber_id} THEN
|
IF new_job_subscriber_id IS DISTINCT FROM (OLD.{job} ->> '{subscriber_id}')::integer AND new_job_subscriber_id IS DISTINCT FROM NEW.{subscriber_id} THEN
|
||||||
NEW.{subscriber_id} = new_job_subscriber_id;
|
NEW.{subscriber_id} = new_job_subscriber_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_subscription_id != (OLD.{job} ->> '{subscription_id}')::integer AND new_job_subscription_id != NEW.{subscription_id} THEN
|
IF new_job_subscription_id IS DISTINCT FROM (OLD.{job} ->> '{subscription_id}')::integer AND new_job_subscription_id IS DISTINCT FROM NEW.{subscription_id} THEN
|
||||||
NEW.{subscription_id} = new_job_subscription_id;
|
NEW.{subscription_id} = new_job_subscription_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_cron_id != (OLD.{job} ->> '{cron_id}')::integer AND new_job_cron_id != NEW.{cron_id} THEN
|
IF new_job_cron_id IS DISTINCT FROM (OLD.{job} ->> '{cron_id}')::integer AND new_job_cron_id IS DISTINCT FROM NEW.{cron_id} THEN
|
||||||
NEW.{cron_id} = new_job_cron_id;
|
NEW.{cron_id} = new_job_cron_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_task_type != (OLD.{job} ->> '{task_type}')::text AND new_job_task_type != NEW.{task_type} THEN
|
IF new_job_task_type IS DISTINCT FROM (OLD.{job} ->> '{task_type}')::text AND new_job_task_type IS DISTINCT FROM NEW.{task_type} THEN
|
||||||
NEW.{task_type} = new_job_task_type;
|
NEW.{task_type} = new_job_task_type;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;"#,
|
$$ LANGUAGE plpgsql;"#,
|
||||||
|
apalis_schema = ApalisSchema::Schema.to_string(),
|
||||||
job = ApalisJobs::Job.to_string(),
|
job = ApalisJobs::Job.to_string(),
|
||||||
subscriber_id = ApalisJobs::SubscriberId.to_string(),
|
subscriber_id = ApalisJobs::SubscriberId.to_string(),
|
||||||
subscription_id = ApalisJobs::SubscriptionId.to_string(),
|
subscription_id = ApalisJobs::SubscriptionId.to_string(),
|
||||||
@ -381,7 +382,7 @@ impl MigrationTrait for Migration {
|
|||||||
let db = manager.get_connection();
|
let db = manager.get_connection();
|
||||||
|
|
||||||
db.execute_unprepared(&format!(
|
db.execute_unprepared(&format!(
|
||||||
r#"CREATE OR REPLACE FUNCTION {SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}() RETURNS trigger AS $$
|
r#"CREATE OR REPLACE FUNCTION {apalis_schema}.{SETUP_APALIS_JOBS_EXTRA_FOREIGN_KEYS_FUNCTION_NAME}() RETURNS trigger AS $$
|
||||||
DECLARE
|
DECLARE
|
||||||
new_job_subscriber_id integer;
|
new_job_subscriber_id integer;
|
||||||
new_job_subscription_id integer;
|
new_job_subscription_id integer;
|
||||||
@ -390,18 +391,19 @@ impl MigrationTrait for Migration {
|
|||||||
new_job_subscriber_id = (NEW.{job} ->> '{subscriber_id}')::integer;
|
new_job_subscriber_id = (NEW.{job} ->> '{subscriber_id}')::integer;
|
||||||
new_job_subscription_id = (NEW.{job} ->> '{subscription_id}')::integer;
|
new_job_subscription_id = (NEW.{job} ->> '{subscription_id}')::integer;
|
||||||
new_job_task_type = (NEW.{job} ->> '{task_type}')::text;
|
new_job_task_type = (NEW.{job} ->> '{task_type}')::text;
|
||||||
IF new_job_subscriber_id != (OLD.{job} ->> '{subscriber_id}')::integer AND new_job_subscriber_id != NEW.{subscriber_id} THEN
|
IF new_job_subscriber_id IS DISTINCT FROM (OLD.{job} ->> '{subscriber_id}')::integer AND new_job_subscriber_id IS DISTINCT FROM NEW.{subscriber_id} THEN
|
||||||
NEW.{subscriber_id} = new_job_subscriber_id;
|
NEW.{subscriber_id} = new_job_subscriber_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_subscription_id != (OLD.{job} ->> '{subscription_id}')::integer AND new_job_subscription_id != NEW.{subscription_id} THEN
|
IF new_job_subscription_id IS DISTINCT FROM (OLD.{job} ->> '{subscription_id}')::integer AND new_job_subscription_id IS DISTINCT FROM NEW.{subscription_id} THEN
|
||||||
NEW.{subscription_id} = new_job_subscription_id;
|
NEW.{subscription_id} = new_job_subscription_id;
|
||||||
END IF;
|
END IF;
|
||||||
IF new_job_task_type != (OLD.{job} ->> '{task_type}')::text AND new_job_task_type != NEW.{task_type} THEN
|
IF new_job_task_type IS DISTINCT FROM (OLD.{job} ->> '{task_type}')::text AND new_job_task_type IS DISTINCT FROM NEW.{task_type} THEN
|
||||||
NEW.{task_type} = new_job_task_type;
|
NEW.{task_type} = new_job_task_type;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE plpgsql;"#,
|
$$ LANGUAGE plpgsql;"#,
|
||||||
|
apalis_schema = ApalisSchema::Schema.to_string(),
|
||||||
job = ApalisJobs::Job.to_string(),
|
job = ApalisJobs::Job.to_string(),
|
||||||
subscriber_id = ApalisJobs::SubscriberId.to_string(),
|
subscriber_id = ApalisJobs::SubscriberId.to_string(),
|
||||||
subscription_id = ApalisJobs::SubscriptionId.to_string(),
|
subscription_id = ApalisJobs::SubscriptionId.to_string(),
|
||||||
|
Loading…
Reference in New Issue
Block a user