fix(handler): set issue_prefix when auto-creating workspace on first login
ensureUserWorkspace in auth.go omitted the IssuePrefix field when creating a default workspace during first login. This caused the workspace's issue_prefix to be empty, producing identifiers like "-16" instead of "JIA-16". - Pass generateIssuePrefix(wsName) when creating the default workspace - Add fallback in getIssuePrefix to regenerate from workspace name if the stored prefix is empty - Add migration 024 to backfill empty prefixes on existing workspaces
This commit is contained in:
parent
e1e4079da1
commit
f5519e4f64
4 changed files with 18 additions and 2 deletions
|
|
@ -133,10 +133,12 @@ func (h *Handler) ensureUserWorkspace(ctx context.Context, user db.User) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
wsName := defaultWorkspaceName(user)
|
||||
workspace, err := qtx.CreateWorkspace(ctx, db.CreateWorkspaceParams{
|
||||
Name: defaultWorkspaceName(user),
|
||||
Name: wsName,
|
||||
Slug: defaultWorkspaceSlug(user),
|
||||
Description: pgtype.Text{},
|
||||
IssuePrefix: generateIssuePrefix(wsName),
|
||||
})
|
||||
if err != nil {
|
||||
if isUniqueViolation(err) {
|
||||
|
|
|
|||
|
|
@ -250,12 +250,17 @@ func splitIdentifier(id string) *identifierParts {
|
|||
}
|
||||
|
||||
// getIssuePrefix fetches the issue_prefix for a workspace.
|
||||
// Falls back to generating a prefix from the workspace name if the stored
|
||||
// prefix is empty (e.g. workspaces created before the prefix was introduced).
|
||||
func (h *Handler) getIssuePrefix(ctx context.Context, workspaceID pgtype.UUID) string {
|
||||
ws, err := h.Queries.GetWorkspace(ctx, workspaceID)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return ws.IssuePrefix
|
||||
if ws.IssuePrefix != "" {
|
||||
return ws.IssuePrefix
|
||||
}
|
||||
return generateIssuePrefix(ws.Name)
|
||||
}
|
||||
|
||||
func (h *Handler) loadAgentForUser(w http.ResponseWriter, r *http.Request, agentID string) (db.Agent, bool) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
-- No-op: we cannot reliably determine which workspaces previously had empty prefixes.
|
||||
8
server/migrations/024_backfill_empty_issue_prefix.up.sql
Normal file
8
server/migrations/024_backfill_empty_issue_prefix.up.sql
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
-- Backfill workspaces that have an empty issue_prefix (e.g. auto-created
|
||||
-- during first login before the prefix was wired up in ensureUserWorkspace).
|
||||
UPDATE workspace SET issue_prefix = UPPER(
|
||||
LEFT(REGEXP_REPLACE(name, '[^a-zA-Z]', '', 'g'), 3)
|
||||
) WHERE issue_prefix = '';
|
||||
|
||||
-- Fallback for workspaces whose name has no alphabetic characters.
|
||||
UPDATE workspace SET issue_prefix = 'WS' WHERE issue_prefix = '';
|
||||
Loading…
Add table
Add a link
Reference in a new issue