feat: query for update usertitle
This commit is contained in:
parent
f2589e05e8
commit
658d666fec
3 changed files with 49 additions and 19 deletions
|
|
@ -461,21 +461,13 @@ VALUES (
|
||||||
)
|
)
|
||||||
RETURNING user_id, title_id, status, rate, review_id, ctime;
|
RETURNING user_id, title_id, status, rate, review_id, ctime;
|
||||||
|
|
||||||
-- -- name: UpdateUserTitle :one
|
-- name: UpdateUserTitle :one
|
||||||
-- UPDATE usertitles
|
-- Fails with sql.ErrNoRows if (user_id, title_id) not found
|
||||||
-- SET
|
UPDATE usertitles
|
||||||
-- status = COALESCE(sqlc.narg('status'), status),
|
SET
|
||||||
-- rate = COALESCE(sqlc.narg('rate'), rate),
|
status = COALESCE(sqlc.narg('status')::usertitle_status_t, status),
|
||||||
-- review_id = COALESCE(sqlc.narg('review_id'), review_id)
|
rate = COALESCE(sqlc.narg('rate')::int, rate)
|
||||||
-- WHERE user_id = $1 AND title_id = $2
|
WHERE
|
||||||
-- RETURNING *;
|
user_id = sqlc.arg('user_id')
|
||||||
|
AND title_id = sqlc.arg('title_id')
|
||||||
-- -- name: DeleteUserTitle :exec
|
RETURNING *;
|
||||||
-- DELETE FROM usertitles
|
|
||||||
-- WHERE user_id = $1 AND ($2::int IS NULL OR title_id = $2);
|
|
||||||
|
|
||||||
-- -- name: ListTags :many
|
|
||||||
-- SELECT tag_id, tag_names
|
|
||||||
-- FROM tags
|
|
||||||
-- ORDER BY tag_id
|
|
||||||
-- LIMIT $1 OFFSET $2;
|
|
||||||
|
|
@ -179,6 +179,6 @@ END;
|
||||||
$$ LANGUAGE plpgsql;
|
$$ LANGUAGE plpgsql;
|
||||||
|
|
||||||
CREATE TRIGGER set_ctime_on_update
|
CREATE TRIGGER set_ctime_on_update
|
||||||
AFTER UPDATE ON usertitles
|
BEFORE UPDATE ON usertitles
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
EXECUTE FUNCTION set_ctime();
|
EXECUTE FUNCTION set_ctime();
|
||||||
|
|
@ -925,3 +925,41 @@ func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) (UpdateU
|
||||||
)
|
)
|
||||||
return i, err
|
return i, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const updateUserTitle = `-- name: UpdateUserTitle :one
|
||||||
|
UPDATE usertitles
|
||||||
|
SET
|
||||||
|
status = COALESCE($1::usertitle_status_t, status),
|
||||||
|
rate = COALESCE($2::int, rate)
|
||||||
|
WHERE
|
||||||
|
user_id = $3
|
||||||
|
AND title_id = $4
|
||||||
|
RETURNING user_id, title_id, status, rate, review_id, ctime
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateUserTitleParams struct {
|
||||||
|
Status NullUsertitleStatusT `json:"status"`
|
||||||
|
Rate *int32 `json:"rate"`
|
||||||
|
UserID int64 `json:"user_id"`
|
||||||
|
TitleID int64 `json:"title_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fails with sql.ErrNoRows if (user_id, title_id) not found
|
||||||
|
func (q *Queries) UpdateUserTitle(ctx context.Context, arg UpdateUserTitleParams) (Usertitle, error) {
|
||||||
|
row := q.db.QueryRow(ctx, updateUserTitle,
|
||||||
|
arg.Status,
|
||||||
|
arg.Rate,
|
||||||
|
arg.UserID,
|
||||||
|
arg.TitleID,
|
||||||
|
)
|
||||||
|
var i Usertitle
|
||||||
|
err := row.Scan(
|
||||||
|
&i.UserID,
|
||||||
|
&i.TitleID,
|
||||||
|
&i.Status,
|
||||||
|
&i.Rate,
|
||||||
|
&i.ReviewID,
|
||||||
|
&i.Ctime,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue