Adds link_type column to quick_links table for iframe vs new_tab behavior. Includes Alembic migration and schema updates. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.5
parent
381d43b60b
commit
49be935b5d
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.6.1] - 2026-01-03
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `link_type` field to quick links for iframe vs new tab behavior
|
||||||
|
|
||||||
## [1.6.0] - 2026-01-03
|
## [1.6.0] - 2026-01-03
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
"""add_link_type_to_quick_links
|
||||||
|
|
||||||
|
Revision ID: f0349c95aa5d
|
||||||
|
Revises: 003
|
||||||
|
Create Date: 2026-01-03 13:14:46.911770+00:00
|
||||||
|
"""
|
||||||
|
from typing import Sequence, Union
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision: str = 'f0349c95aa5d'
|
||||||
|
down_revision: Union[str, None] = '003'
|
||||||
|
branch_labels: Union[str, Sequence[str], None] = None
|
||||||
|
depends_on: Union[str, Sequence[str], None] = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
op.add_column('quick_links', sa.Column('link_type', sa.String(length=20), nullable=True, server_default='iframe'))
|
||||||
|
# Update existing rows to have the default value
|
||||||
|
op.execute("UPDATE quick_links SET link_type = 'iframe' WHERE link_type IS NULL")
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
op.drop_column('quick_links', 'link_type')
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "core-api"
|
name = "core-api"
|
||||||
version = "1.6.0"
|
version = "1.6.1"
|
||||||
description = "Core Code API - Infrastructure management and tools API"
|
description = "Core Code API - Infrastructure management and tools API"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class QuickLink(Base):
|
|||||||
# Ordering and display
|
# Ordering and display
|
||||||
position = Column(Integer, default=0)
|
position = Column(Integer, default=0)
|
||||||
is_visible = Column(Boolean, default=True)
|
is_visible = Column(Boolean, default=True)
|
||||||
|
link_type = Column(String(20), default="iframe") # "iframe", "new_tab", etc.
|
||||||
|
|
||||||
# Styling
|
# Styling
|
||||||
color = Column(String(20), nullable=True) # Hex color for the link card
|
color = Column(String(20), nullable=True) # Hex color for the link card
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class QuickLinkCreate(QuickLinkBase):
|
|||||||
"""Schema for creating a quick link"""
|
"""Schema for creating a quick link"""
|
||||||
position: Optional[int] = Field(0, ge=0, description="Display position")
|
position: Optional[int] = Field(0, ge=0, description="Display position")
|
||||||
is_visible: Optional[bool] = Field(True, description="Whether link is visible")
|
is_visible: Optional[bool] = Field(True, description="Whether link is visible")
|
||||||
|
link_type: Optional[str] = Field("iframe", max_length=20, description="Link type: iframe, new_tab")
|
||||||
|
|
||||||
|
|
||||||
class QuickLinkUpdate(BaseSchema):
|
class QuickLinkUpdate(BaseSchema):
|
||||||
@@ -37,6 +38,7 @@ class QuickLinkUpdate(BaseSchema):
|
|||||||
category: Optional[str] = Field(None, max_length=50)
|
category: Optional[str] = Field(None, max_length=50)
|
||||||
position: Optional[int] = Field(None, ge=0)
|
position: Optional[int] = Field(None, ge=0)
|
||||||
is_visible: Optional[bool] = None
|
is_visible: Optional[bool] = None
|
||||||
|
link_type: Optional[str] = Field(None, max_length=20)
|
||||||
color: Optional[str] = Field(None, max_length=20)
|
color: Optional[str] = Field(None, max_length=20)
|
||||||
background_color: Optional[str] = Field(None, max_length=20)
|
background_color: Optional[str] = Field(None, max_length=20)
|
||||||
|
|
||||||
@@ -47,6 +49,7 @@ class QuickLinkResponse(QuickLinkBase):
|
|||||||
user_id: Optional[str] = None
|
user_id: Optional[str] = None
|
||||||
position: int
|
position: int
|
||||||
is_visible: bool
|
is_visible: bool
|
||||||
|
link_type: str = "iframe"
|
||||||
created_at: datetime
|
created_at: datetime
|
||||||
updated_at: datetime
|
updated_at: datetime
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user