From cb67a7d48fabc058668cfe497a67988c07a51505 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Setni=C4=8Dka?= <setnicka@seznam.cz>
Date: Sat, 8 Oct 2022 21:17:00 +0200
Subject: [PATCH] =?UTF-8?q?DB:=20Joby=20maj=C3=AD=20prioritu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
db/db.ddl | 1 +
db/upgrade-20221008.sql | 4 ++++
mo/db.py | 1 +
mo/jobs/__init__.py | 4 ++--
4 files changed, 8 insertions(+), 2 deletions(-)
create mode 100644 db/upgrade-20221008.sql
diff --git a/db/db.ddl b/db/db.ddl
index 7b3dc025..61ca36ae 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 00000000..f682a3ff
--- /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 22b86d31..fde19ad2 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 67bff065..4393ee86 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()
--
GitLab