Connected nodes
This commit is contained in:
parent
dff17cad5b
commit
2b8472bcd1
6 changed files with 280 additions and 84 deletions
61
node.go
61
node.go
|
|
@ -275,5 +275,66 @@ func GetNodeConnections(nodeID int) (connections []Node, err error) { // {{{
|
|||
|
||||
return
|
||||
} // }}}
|
||||
func SearchNodes(typeID int, search string, maxResults int) (nodes []Node, err error) { // {{{
|
||||
nodes = []Node{}
|
||||
|
||||
var rows *sqlx.Rows
|
||||
rows, err = db.Queryx(`
|
||||
SELECT
|
||||
n.id,
|
||||
n.name,
|
||||
n.updated,
|
||||
n.data,
|
||||
COALESCE(n.parent_id, 0) AS parent_id,
|
||||
|
||||
t.id AS type_id,
|
||||
t.name AS type_name,
|
||||
t.schema AS type_schema_raw,
|
||||
t.schema->>'icon' AS type_icon
|
||||
FROM public.node n
|
||||
INNER JOIN public.type t ON n.type_id = t.id
|
||||
WHERE
|
||||
n.id > 0 AND
|
||||
n.name ILIKE $2 AND
|
||||
(CASE
|
||||
WHEN $1 = -1 THEN true
|
||||
ELSE
|
||||
type_id = $1
|
||||
END)
|
||||
|
||||
ORDER BY
|
||||
t.schema->>'title' ASC,
|
||||
UPPER(n.name) ASC
|
||||
LIMIT $3
|
||||
`,
|
||||
typeID,
|
||||
search,
|
||||
maxResults+1,
|
||||
)
|
||||
if err != nil {
|
||||
err = werr.Wrap(err)
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
for rows.Next() {
|
||||
var node Node
|
||||
err = rows.StructScan(&node)
|
||||
if err != nil {
|
||||
err = werr.Wrap(err)
|
||||
return
|
||||
}
|
||||
|
||||
err = json.Unmarshal(node.TypeSchemaRaw, &node.TypeSchema)
|
||||
if err != nil {
|
||||
err = werr.Wrap(err)
|
||||
return
|
||||
}
|
||||
|
||||
nodes = append(nodes, node)
|
||||
}
|
||||
|
||||
return
|
||||
} // }}}
|
||||
|
||||
// vim: foldmethod=marker
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue