From cbf450c04600dabc7f8478ed1bf9dd0f891157dc Mon Sep 17 00:00:00 2001 From: Mesut GENEZ Date: Mon, 8 Jul 2024 09:55:21 +0300 Subject: [PATCH] schedule --- models/schedule.go | 27 +++++++++++++++++++++++++-- query.sql | 5 +---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/models/schedule.go b/models/schedule.go index 033ba35..a8a8165 100644 --- a/models/schedule.go +++ b/models/schedule.go @@ -294,17 +294,40 @@ func (m *Schedule) Delete(id, userID int) error { return nil } +func (m *Schedule) WithQueryAll() []*Schedule { + return m.queryPrepare(config.App().QUERY["SCHEDULE_MAPS"]) +} + func (m *Schedule) WithQuery(userID, offset, limit int, search string) []*Schedule { schedules := []*Schedule{} + query := strings.TrimSuffix(config.App().QUERY["SCHEDULE_MAPS"], ";") + + if userID == 0 { + return schedules + } + query += fmt.Sprintf(" AND user_id=%d", userID) + if search != "" { + query += fmt.Sprintf(` AND (timing ilike %s OR "group"->>'name' ilike %s OR request->>'url' ilike %s OR notification->>'title' ilike %s)`, search, search, search, search) + } + if limit > 0 { + query += fmt.Sprintf(" ORDER BY id DESC offset %d LIMIT %d;", offset, limit) + } + + return m.queryPrepare(query) +} + +func (m *Schedule) queryPrepare(query string) []*Schedule { + schedules := []*Schedule{} + // prepare schedules paginate - stmt, err := config.App().DB.Prepare(config.App().QUERY["SCHEDULE_MAPS"]) + stmt, err := config.App().DB.Prepare(query) if err != nil { return schedules } // query - rows, err := stmt.Query(userID, "%"+search+"%", offset, limit) + rows, err := stmt.Query() if err != nil { return schedules } diff --git a/query.sql b/query.sql index a34dbaa..6592c6c 100644 --- a/query.sql +++ b/query.sql @@ -418,7 +418,4 @@ WITH schedule_lists AS ( LEFT JOIN webhooks w on w.schedule_id=s.id GROUP BY s.id, u.id, g.id, r.id, n.id ) -SELECT * FROM schedule_lists -WHERE user_id=$1 AND deleted_at isnull -AND (timing ilike $2 OR "group"->>'name' ilike $2 OR request->>'url' ilike $2 OR notification->>'title' ilike $2) -ORDER BY id DESC offset $3 LIMIT $4; \ No newline at end of file +SELECT * FROM schedule_lists WHERE deleted_at isnull; \ No newline at end of file