mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-06 07:12:46 +01:00
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package migrations
|
|
|
|
import (
|
|
"github.com/pocketbase/dbx"
|
|
"github.com/pocketbase/pocketbase/daos"
|
|
)
|
|
|
|
const searchViewName = "ticket_search"
|
|
|
|
const searchViewQuery = `
|
|
SELECT
|
|
tickets.id,
|
|
tickets.name,
|
|
tickets.created,
|
|
tickets.description,
|
|
tickets.open,
|
|
tickets.type,
|
|
tickets.state,
|
|
users.name as owner_name,
|
|
group_concat(comments.message) as comment_messages,
|
|
group_concat(files.name) as file_names,
|
|
group_concat(links.name) as link_names,
|
|
group_concat(links.url) as link_urls,
|
|
group_concat(tasks.name) as task_names,
|
|
group_concat(timeline.message) as timeline_messages
|
|
FROM tickets
|
|
LEFT JOIN comments ON comments.ticket = tickets.id
|
|
LEFT JOIN files ON files.ticket = tickets.id
|
|
LEFT JOIN links ON links.ticket = tickets.id
|
|
LEFT JOIN tasks ON tasks.ticket = tickets.id
|
|
LEFT JOIN timeline ON timeline.ticket = tickets.id
|
|
LEFT JOIN users ON users.id = tickets.owner
|
|
GROUP BY tickets.id
|
|
`
|
|
|
|
func searchViewUp(db dbx.Builder) error {
|
|
return daos.New(db).SaveCollection(internalView(searchViewName, searchViewQuery))
|
|
}
|
|
|
|
func searchViewDown(db dbx.Builder) error {
|
|
dao := daos.New(db)
|
|
|
|
id, err := dao.FindCollectionByNameOrId(searchViewName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return dao.DeleteCollection(id)
|
|
}
|