Rewrite most of template queries to sqlc - #1454
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Security & Bug IssuesCritical: Missing team_id validation in GetTemplateByIdOrAliaspackages/db/queries/templates/get_template.sql:1-7 The query lacks SELECT e.* FROM "public"."envs" e
LEFT JOIN "public"."env_aliases" ea ON ea.env_id = e.id
WHERE (
e.id = @template_id_or_alias OR
ea.alias = @template_id_or_alias
);This is used in
Fix: Add Missing security check in UpdateTemplateBuildpackages/db/queries/builds/update_template.sql:1-8 The query updates build fields without validating:
UPDATE "public"."env_builds"
SET start_cmd = @start_cmd, ready_cmd = @ready_cmd, dockerfile = @dockerfile
WHERE id = @build_uuid;Used in Fix: Add Potential N+1 query performance issuepackages/db/queries/builds/get_template_builds_by_id_or_alias.sql:1-9 The WHERE e.team_id = @team_id AND (
e.id = @template_id_or_alias OR
ea.alias = @template_id_or_alias
)For large teams with many templates, this could cause performance degradation. Consider: Splitting into two queries or ensuring proper indexes on Race condition in FinishTemplateBuildpackages/db/queries/builds/finish_template_build.sql:1-11 The UPDATE has no transaction isolation check. If two processes call this simultaneously with different UPDATE "public"."env_builds"
SET finished_at = NOW(), total_disk_size_mb = @total_disk_size_mb,
status = 'uploaded', envd_version = @envd_version
WHERE id = @build_id AND env_id = @env_id;Consider: Adding a status check |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
sitole
left a comment
There was a problem hiding this comment.
Fell free to merge it if 7cdb35f#r2517570525 is considered resolved.
Note
Switch template CRUD/build logic to sqlc-backed queries and adopt CleanTemplateID, adding new SQL/generated code and removing legacy helpers.
sqlcqueries for template access/control intemplate_delete,template_update,deprecated_template_start_build, and v2 build start; update concurrent-build checks, snapshot existence, build updates, and template deletion viaqueries.*.id.CleanTemplateIDinstead ofCleanEnvIDacross handlers (deprecated_template_request_build,sandbox_create,template_delete,template_update).dberrorsand new query results.sqlc(GetTemplateBuildWithTemplate,FinishTemplateBuild,UpdateEnvBuildStatus) in build status sync and finish paths.CleanTemplateID.sqlcqueries and generated code for template/build ops: concurrent builds, get template/build(s) by id/alias, update build, finish build, delete template, exists snapshots, update template, build status updates, and additional fetchers.packages/shared/pkg/db/envs.go).CleanTemplateID.Written by Cursor Bugbot for commit 7cdb35f. This will update automatically on new commits. Configure here.