diff --git a/db/db.ddl b/db/db.ddl index 7b3dc02526a384c48b54481f366ea20035a5e8e1..61ca36ae5491f129486101c66dca35f48509da5a 100644 --- a/db/db.ddl +++ b/db/db.ddl @@ -354,6 +354,7 @@ CREATE TABLE jobs ( job_id serial PRIMARY KEY, type job_type NOT NULL, state job_state NOT NULL, + priority int NOT NULL DEFAULT 0, -- vyšší číslo = vyšší priorita user_id int NOT NULL REFERENCES users(user_id), -- komu patří created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, -- kdy byl založen finished_at timestamp with time zone DEFAULT NULL, -- kdy doběhl diff --git a/db/upgrade-20221008.sql b/db/upgrade-20221008.sql new file mode 100644 index 0000000000000000000000000000000000000000..f682a3ff3accc809c206e084d56c055fcebe41cf --- /dev/null +++ b/db/upgrade-20221008.sql @@ -0,0 +1,4 @@ +SET ROLE 'mo_osmo'; + +ALTER TABLE jobs ADD COLUMN + priority int NOT NULL DEFAULT 0; diff --git a/mo/db.py b/mo/db.py index 22b86d31b95147281c590da6f79e0d4e0d94ad3a..fde19ad219940d724b3ec620e9201972ecd7992f 100644 --- a/mo/db.py +++ b/mo/db.py @@ -799,6 +799,7 @@ class Job(Base): job_id = Column(Integer, primary_key=True, server_default=text("nextval('jobs_job_id_seq'::regclass)")) type = Column(Enum(JobType, name='job_type'), nullable=False) state = Column(Enum(JobState, name='job_state'), nullable=False) + priority = Column(Integer, nullable=False, server_default=text("0")) user_id = Column(Integer, ForeignKey('users.user_id'), nullable=False) description = Column(Text, nullable=False, server_default=text("''::text")) result = Column(Text, nullable=False, server_default=text("''::text")) diff --git a/mo/jobs/__init__.py b/mo/jobs/__init__.py index 67bff065b55cdb901fbc81829f5a232097848721..4393ee86d272a9fa6d549e8bacf711d1dd9c8007 100644 --- a/mo/jobs/__init__.py +++ b/mo/jobs/__init__.py @@ -42,8 +42,8 @@ class TheJob: self.job = sess.query(db.Job).with_for_update().get(self.job_id) return self.job - def create(self, type: db.JobType, for_user: db.User) -> db.Job: - self.job = db.Job(type=type, state=db.JobState.preparing, user=for_user) + def create(self, type: db.JobType, for_user: db.User, priority: int = 0) -> db.Job: + self.job = db.Job(type=type, state=db.JobState.preparing, user=for_user, priority=priority) # Do DB přidáváme nehotový job, protože potřebujeme znát job_id pro založení adresáře sess = db.get_session()