@@ -79,7 +79,29 @@ def updateQueueItemById(self, queue_id, data):
7979 cursor .execute (query , (queue_id ,))
8080 result = cursor .fetchone ()
8181 cursor .close ()
82- return result
82+ return
83+
84+ def update_item_order (self , queue_id : int , new_order : int ):
85+ status = 1
86+ query = None
87+ cursor = self .conn .cursor ()
88+ old_order = self .getQueueItemById (queue_id )[5 ]
89+ if new_order < old_order :
90+ query = "UPDATE queue_item SET display_order = display_order + 1 WHERE display_order >= ? AND display_order < ?"
91+ elif new_order > old_order :
92+ query = "UPDATE queue_item SET display_order = display_order - 1 WHERE display_order <= ? AND display_order > ?"
93+ try :
94+ if query :
95+ cursor .execute (query , (new_order , old_order ))
96+ shift = "UPDATE queue_item SET display_order = ? WHERE queue_id = ?"
97+ cursor .execute (shift ,(new_order , queue_id ))
98+ self .conn .commit ()
99+ status = 0
100+ except sqlite3 .Error :
101+ status = 1
102+ finally :
103+ cursor .close ()
104+ return status
83105
84106 def deleteQueueItemById (self , queue_id ):
85107
@@ -96,6 +118,16 @@ def deleteQueueItemById(self, queue_id):
96118 status = 0
97119 try :
98120 cursor .execute (query , (queue_id ,))
121+
122+ query = "SELECT queue_id FROM queue_item ORDER BY display_order ASC"
123+
124+ cursor .execute (query )
125+ items = cursor .fetchall ()
126+
127+ for index , item in enumerate (items ):
128+ query = "UPDATE queue_item SET display_order = ? WHERE queue_id = ?"
129+ cursor .execute (query , (index + 1 , item [0 ]))
130+
99131 self .conn .commit ()
100132 except sqlite3 .Error :
101133 status = 1
@@ -122,10 +154,10 @@ def getScheduledDesigns(self):
122154 d.updated_at
123155 FROM queue_item q
124156 JOIN design d ON q.design_id = d.design_id
125- WHERE d.is_approved = 1
126- ORDER BY
127- CASE WHEN q.scheduled = 1 THEN q.start_time ELSE '9999-12-31 23:59:59' END ASC,
128- q.display_order ASC;
157+ WHERE d.is_approved = 1 AND q.scheduled = 1
158+ AND strftime('%Y-%m-%d %H:%M:%S', q.start_time) <= strftime('%Y-%m-%d %H:%M:%S', 'now')
159+ AND strftime('%Y-%m-%d %H:%M:%S', q.end_time) >= strftime('%Y-%m-%d %H:%M:%S', 'now')
160+ ORDER BY q.display_order ASC;
129161 """
130162 try :
131163 cursor .execute (query )
@@ -153,9 +185,7 @@ def get_all_items_paginated(self, page, page_size):
153185 d.is_approved
154186 FROM queue_item q
155187 JOIN design d ON q.design_id = d.design_id
156- ORDER BY
157- CASE WHEN q.scheduled = 1 THEN q.start_time ELSE '9999-12-31 23:59:59' END ASC,
158- q.display_order ASC
188+ ORDER BY q.display_order ASC
159189 LIMIT ? OFFSET ?;
160190 """
161191 cursor .execute (query , (page_size , offset ))
0 commit comments