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