refactor: simplify db and cmd flags, reduce code duplication
- Abstract property flags into addPropertyFlags in cmd/root.go and apply to commands - Remove unused GetUserByUsername from db.go (it's redundant with service.resolveUserIDByName) - Use configured user in WithMentions directly in inbox command - Refactor resolve methods in node_service_sqlite.go to reduce duplication
This commit is contained in:
@@ -296,31 +296,29 @@ func (s *sqliteNodeService) Update(node *models.Node) error {
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (s *sqliteNodeService) resolveUserIDByNameTx(tx *sql.Tx, username string) (string, error) {
|
||||
func (s *sqliteNodeService) resolveIDByNameAndTypeTx(tx *sql.Tx, title, nodeType string) (string, error) {
|
||||
var id string
|
||||
query := `
|
||||
SELECT n.id FROM nodes n
|
||||
JOIN tags t ON n.id = t.node_id
|
||||
WHERE n.title = ? AND t.tag = ?
|
||||
LIMIT 1
|
||||
`
|
||||
tag := "_type::" + nodeType
|
||||
var err error
|
||||
if tx != nil {
|
||||
err = tx.QueryRow(`
|
||||
SELECT n.id FROM nodes n
|
||||
JOIN tags t ON n.id = t.node_id
|
||||
WHERE n.title = ? AND t.tag = '_type::user'
|
||||
LIMIT 1
|
||||
`, username).Scan(&id)
|
||||
err = tx.QueryRow(query, title, tag).Scan(&id)
|
||||
} else {
|
||||
err = s.db.QueryRow(`
|
||||
SELECT n.id FROM nodes n
|
||||
JOIN tags t ON n.id = t.node_id
|
||||
WHERE n.title = ? AND t.tag = '_type::user'
|
||||
LIMIT 1
|
||||
`, username).Scan(&id)
|
||||
err = s.db.QueryRow(query, title, tag).Scan(&id)
|
||||
}
|
||||
if err == sql.ErrNoRows {
|
||||
return "", nil
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return id, nil
|
||||
return id, err
|
||||
}
|
||||
|
||||
func (s *sqliteNodeService) resolveUserIDByNameTx(tx *sql.Tx, username string) (string, error) {
|
||||
return s.resolveIDByNameAndTypeTx(tx, username, "user")
|
||||
}
|
||||
|
||||
func (s *sqliteNodeService) resolveUserIDByName(username string) (string, error) {
|
||||
@@ -328,30 +326,7 @@ func (s *sqliteNodeService) resolveUserIDByName(username string) (string, error)
|
||||
}
|
||||
|
||||
func (s *sqliteNodeService) resolveNamespaceIDByNameTx(tx *sql.Tx, name string) (string, error) {
|
||||
var id string
|
||||
var err error
|
||||
if tx != nil {
|
||||
err = tx.QueryRow(`
|
||||
SELECT n.id FROM nodes n
|
||||
JOIN tags t ON n.id = t.node_id
|
||||
WHERE n.title = ? AND t.tag = '_type::namespace'
|
||||
LIMIT 1
|
||||
`, name).Scan(&id)
|
||||
} else {
|
||||
err = s.db.QueryRow(`
|
||||
SELECT n.id FROM nodes n
|
||||
JOIN tags t ON n.id = t.node_id
|
||||
WHERE n.title = ? AND t.tag = '_type::namespace'
|
||||
LIMIT 1
|
||||
`, name).Scan(&id)
|
||||
}
|
||||
if err == sql.ErrNoRows {
|
||||
return "", nil
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return id, nil
|
||||
return s.resolveIDByNameAndTypeTx(tx, name, "namespace")
|
||||
}
|
||||
|
||||
func (s *sqliteNodeService) resolveNamespaceIDByName(name string) (string, error) {
|
||||
|
||||
Reference in New Issue
Block a user