Skip to content

Commit c32c486

Browse files
author
Mauricio Cassola
committed
Remove frequency from job
1 parent 143e60f commit c32c486

File tree

3 files changed

+3
-57
lines changed

3 files changed

+3
-57
lines changed

src/db.rs

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -189,22 +189,6 @@ pub async fn run_scheduled_jobs(db: &DbClient) -> anyhow::Result<()> {
189189
for job in jobs.iter() {
190190
update_job_executed_at(&db, &job.id).await?;
191191

192-
if let Some(frequency) = job.frequency {
193-
let duration = get_duration_from_cron(frequency, job.frequency_unit.as_ref().unwrap());
194-
let new_scheduled_at = job.scheduled_at.checked_add_signed(duration).unwrap();
195-
196-
insert_job(
197-
&db,
198-
&job.name,
199-
&new_scheduled_at,
200-
&Some(frequency),
201-
&job.frequency_unit,
202-
&job.metadata,
203-
)
204-
.await?;
205-
tracing::trace!("job succesfully reinserted (name={})", job.name);
206-
}
207-
208192
match handle_job(&job.name, &job.metadata).await {
209193
Ok(_) => {
210194
tracing::trace!("job succesfully executed (id={})", job.id);
@@ -258,17 +242,12 @@ CREATE TABLE issue_data (
258242
data JSONB,
259243
PRIMARY KEY (repo, issue_number, key)
260244
);
261-
",
262-
"
263-
CREATE TYPE frequency_unit AS ENUM ('days', 'hours', 'minutes', 'seconds');
264245
",
265246
"
266247
CREATE TABLE jobs (
267248
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
268249
name TEXT NOT NULL,
269250
scheduled_at TIMESTAMP WITH TIME ZONE NOT NULL,
270-
frequency INTEGER,
271-
frequency_unit frequency_unit,
272251
metadata JSONB,
273252
executed_at TIMESTAMP WITH TIME ZONE,
274253
error_message TEXT

src/db/jobs.rs

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! The `jobs` table provides a way to have scheduled jobs
22
use anyhow::{Context as _, Result};
3-
use chrono::{DateTime, Duration, FixedOffset};
4-
use postgres_types::{FromSql, ToSql};
3+
use chrono::{DateTime, FixedOffset};
54
use serde::{Deserialize, Serialize};
65
use tokio_postgres::Client as DbClient;
76
use uuid::Uuid;
@@ -11,40 +10,23 @@ pub struct Job {
1110
pub id: Uuid,
1211
pub name: String,
1312
pub scheduled_at: DateTime<FixedOffset>,
14-
pub frequency: Option<i32>,
15-
pub frequency_unit: Option<FrequencyUnit>,
1613
pub metadata: serde_json::Value,
1714
pub executed_at: Option<DateTime<FixedOffset>>,
1815
pub error_message: Option<String>,
1916
}
2017

21-
#[derive(Serialize, Deserialize, Debug, ToSql, FromSql)]
22-
#[postgres(name = "frequency_unit")]
23-
pub enum FrequencyUnit {
24-
#[postgres(name = "days")]
25-
Days,
26-
#[postgres(name = "hours")]
27-
Hours,
28-
#[postgres(name = "minutes")]
29-
Minutes,
30-
#[postgres(name = "seconds")]
31-
Seconds,
32-
}
33-
3418
pub async fn insert_job(
3519
db: &DbClient,
3620
name: &String,
3721
scheduled_at: &DateTime<FixedOffset>,
38-
frequency: &Option<i32>,
39-
frequency_unit: &Option<FrequencyUnit>,
4022
metadata: &serde_json::Value,
4123
) -> Result<()> {
4224
tracing::trace!("insert_job(name={})", name);
4325

4426
db.execute(
45-
"INSERT INTO jobs (name, scheduled_at, frequency, frequency_unit, metadata) VALUES ($1, $2, $3, $4, $5)
27+
"INSERT INTO jobs (name, scheduled_at, metadata) VALUES ($1, $2, $3, $4, $5)
4628
ON CONFLICT (name, scheduled_at) DO UPDATE SET metadata = EXCLUDED.metadata",
47-
&[&name, &scheduled_at, &frequency, &frequency_unit, &metadata],
29+
&[&name, &scheduled_at, &metadata],
4830
)
4931
.await
5032
.context("Inserting job")?;
@@ -103,8 +85,6 @@ pub async fn get_jobs_to_execute(db: &DbClient) -> Result<Vec<Job>> {
10385
let id: Uuid = job.get(0);
10486
let name: String = job.get(1);
10587
let scheduled_at: DateTime<FixedOffset> = job.get(2);
106-
let frequency: Option<i32> = job.get(3);
107-
let frequency_unit: Option<FrequencyUnit> = job.get(4);
10888
let metadata: serde_json::Value = job.get(5);
10989
let executed_at: Option<DateTime<FixedOffset>> = job.get(6);
11090
let error_message: Option<String> = job.get(7);
@@ -113,8 +93,6 @@ pub async fn get_jobs_to_execute(db: &DbClient) -> Result<Vec<Job>> {
11393
id,
11494
name,
11595
scheduled_at,
116-
frequency,
117-
frequency_unit,
11896
metadata,
11997
executed_at,
12098
error_message,
@@ -123,12 +101,3 @@ pub async fn get_jobs_to_execute(db: &DbClient) -> Result<Vec<Job>> {
123101

124102
Ok(data)
125103
}
126-
127-
pub fn get_duration_from_cron(cron_period: i32, cron_unit: &FrequencyUnit) -> Duration {
128-
match cron_unit {
129-
FrequencyUnit::Days => Duration::days(cron_period as i64),
130-
FrequencyUnit::Hours => Duration::hours(cron_period as i64),
131-
FrequencyUnit::Minutes => Duration::minutes(cron_period as i64),
132-
FrequencyUnit::Seconds => Duration::seconds(cron_period as i64),
133-
}
134-
}

src/handlers/jobs.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
// Job {
2222
// name: "send_zulip_message",
2323
// scheduled_at: "2022-09-30T11:30:00+10:00",
24-
// frequency: Some(7),
25-
// frequency_unit: Some(FrequencyUnit::Days),
2624
// metadata: metadata
2725
// }
2826
//

0 commit comments

Comments
 (0)