Skip to content

Badge model columns missing nullable=False, mismatching schema #578

Description

@mircealungu

The SQL schema for badge enforces NOT NULL on description and (after PR #573) default_description, but the SQLAlchemy model has them as plain db.Column(db.Text) — which defaults to nullable=True.

# zeeguu/core/model/badge.py
description = db.Column(db.Text)               # schema: NOT NULL
default_description = db.Column(db.Text)       # schema: NOT NULL (after PR #573)

Why it matters

  • ORM-layer code can construct a Badge without these fields and the model layer won't complain. The error only surfaces at flush/commit time as a database-level integrity error, which is harder to trace than a clear ORM validation failure.
  • The Python model becomes misleading documentation of the schema.

Fix

Add nullable=False to columns whose schema enforces it:

description = db.Column(db.Text, nullable=False)
default_description = db.Column(db.Text, nullable=False)

Worth a quick sweep of other models too — this is a pattern that probably exists elsewhere.

Context: came up reviewing PR #573.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions