MovesTable

table

Breakdex::DataStores::MovesTable

Stores every breakdancing move in the arsenal with video attachment and learning state

Moves are the atomic unit of the breakdancer's arsenal. Every other entity (combos, reviews, FSRS cards, aura links, achievements) depends on moves existing. A move without a video is valid — it represents intent to learn.

Relationships

Depends On 2

moves_daovideo_service

Writes To 1

sync_log_table

Breaks If 2

drift_migration_failsname_uniqueness_trigger_dropped

Data Access

\u2605 Owns 1

sync_log_table

\u2192 Writes 1

sync_log_table

Answers

States

StateBehavior
archived
message: Move excluded from arsenal, reviews, and combos but retained for history and sync
shows: hidden_from_default_queries
no Content Hash
message: Legacy move created before v10 — hash computed on next edit or sync
shows: pending_hash_computation
no Video
message: Move is valid — renders with placeholder, reviews without playback
shows: placeholder_thumbnail

Columns

NameTypeConstraints
idtextNOT NULL
nametextNOT NULL MIN: 1
learning_statetextNOT NULL DEFAULT: NEW ENUM: NEW, LEARNING, MASTERY
categorytextNOT NULL DEFAULT: default
video_pathtext
original_video_nametext
managed_album_asset_idtext
managed_album_filenametext
managed_album_nametext
archived_atdatetime
archive_reasontext
notestext
content_hashtext
created_atdatetimeNOT NULL DEFAULT: now

Primary Key

id

Triggers

moves_name_unique_insert Enforces case-insensitive name uniqueness on INSERT (SQLite lacks partial unique indexes)
moves_name_unique_update Enforces case-insensitive name uniqueness on UPDATE

Concerns

SyncAwareArchivableContentAddressed