placeos-models
Version, currently 9.107.6116 versions
- 9.114.0latestSep 23, 2026
- 9.113.1Sep 22, 2026
- 9.113.0not indexedSep 22, 2026
- 9.112.0Sep 17, 2026
- 9.111.0not indexedSep 17, 2026
- 9.110.4not indexedSep 17, 2026
- 9.110.3not indexedSep 17, 2026
- 9.110.2not indexedSep 17, 2026
- 9.110.1not indexedSep 17, 2026
- 9.110.0not indexedSep 17, 2026
- 9.109.1Sep 11, 2026
- 9.109.0Aug 31, 2026
- 9.108.2Aug 27, 2026
- 9.108.1Aug 21, 2026
- 9.108.0not indexedAug 21, 2026
- 9.107.6not indexedAug 21, 2026
- 9.107.5Aug 14, 2026
- 9.107.4not indexedAug 14, 2026
- 9.107.3not indexedAug 14, 2026
- 9.107.2not indexedAug 14, 2026
- 9.107.1not indexedAug 14, 2026
- 9.107.0not indexedAug 14, 2026
- 9.106.2not indexedAug 14, 2026
- 9.106.1not indexedAug 14, 2026
- 9.106.0not indexedAug 14, 2026
- 9.105.3not indexedAug 14, 2026
- 9.105.2not indexedAug 14, 2026
- 9.105.1not indexedAug 14, 2026
- 9.105.0not indexedAug 14, 2026
- 9.104.0not indexedAug 14, 2026
- 9.103.0not indexedAug 14, 2026
- 9.102.0not indexedAug 14, 2026
- 9.101.0not indexedAug 14, 2026
- 9.100.1not indexedAug 14, 2026
- 9.100.0not indexedAug 14, 2026
- 9.99.0not indexedAug 14, 2026
- 9.98.4not indexedAug 14, 2026
- 9.98.3not indexedAug 14, 2026
- 9.98.2not indexedAug 14, 2026
- 9.98.1not indexedAug 14, 2026
- 9.98.0not indexedAug 14, 2026
- 9.97.0not indexedAug 14, 2026
- 9.96.0not indexedAug 14, 2026
- 9.95.0not indexedAug 14, 2026
- 9.94.1not indexedAug 14, 2026
- 9.94.0not indexedAug 14, 2026
- 9.93.0not indexedAug 14, 2026
- 9.92.1not indexedAug 14, 2026
- 9.92.0not indexedAug 14, 2026
- 9.91.0not indexedAug 14, 2026
- 9.90.1not indexedAug 14, 2026
- 9.90.0not indexedAug 14, 2026
- 9.89.1not indexedAug 14, 2026
- 9.89.0not indexedAug 14, 2026
- 9.88.0not indexedAug 14, 2026
- 9.87.1not indexedAug 14, 2026
- 9.87.0not indexedAug 14, 2026
- 9.86.3not indexedAug 14, 2026
- 9.86.2not indexedAug 14, 2026
- 9.86.1not indexedAug 14, 2026
- 9.86.0not indexedAug 14, 2026
- 9.85.0not indexedAug 14, 2026
- 9.84.1not indexedAug 14, 2026
- 9.84.0not indexedAug 14, 2026
- 9.83.1not indexedAug 14, 2026
- 9.83.0not indexedAug 14, 2026
- 9.82.2not indexedAug 14, 2026
- 9.82.1not indexedAug 14, 2026
- 9.82.0not indexedAug 14, 2026
- 9.81.1not indexedAug 14, 2026
- 9.81.0not indexedAug 14, 2026
- 9.80.0not indexedAug 14, 2026
- 9.79.0not indexedAug 14, 2026
- 9.78.0not indexedAug 14, 2026
- 9.77.0not indexedAug 14, 2026
- 9.76.2not indexedAug 14, 2026
- 9.76.1not indexedAug 14, 2026
- 9.76.0not indexedAug 14, 2026
- 9.75.2not indexedAug 14, 2026
- 9.75.1not indexedAug 14, 2026
- 9.75.0not indexedAug 14, 2026
- 9.74.0not indexedAug 14, 2026
- 9.73.0not indexedAug 14, 2026
- 9.72.4not indexedAug 14, 2026
- 9.72.3not indexedAug 14, 2026
- 9.72.2not indexedAug 14, 2026
- 9.72.1not indexedAug 14, 2026
- 9.72.0not indexedAug 14, 2026
- 9.71.1not indexedAug 14, 2026
- 9.71.0not indexedAug 14, 2026
- 9.70.0not indexedAug 14, 2026
- 9.69.0not indexedAug 14, 2026
- 9.68.0not indexedAug 14, 2026
- 9.67.0not indexedAug 14, 2026
- 9.66.0not indexedAug 14, 2026
- 9.65.3not indexedAug 14, 2026
- 9.65.2not indexedAug 14, 2026
- 9.65.1not indexedAug 14, 2026
- 9.65.0not indexedAug 14, 2026
- 9.64.1not indexedAug 14, 2026
- 9.64.0not indexedAug 14, 2026
- 9.63.0not indexedAug 14, 2026
- 9.62.4not indexedAug 14, 2026
- 9.62.3not indexedAug 14, 2026
- 9.62.2not indexedAug 14, 2026
- 9.62.1not indexedAug 14, 2026
- 9.62.0not indexedAug 14, 2026
- 9.61.1not indexedAug 14, 2026
- 9.61.0not indexedAug 14, 2026
- 9.60.1not indexedAug 14, 2026
- 9.60.0not indexedAug 14, 2026
- 9.59.1not indexedAug 14, 2026
- 9.59.0not indexedAug 14, 2026
- 9.58.3not indexedAug 14, 2026
- 9.58.2not indexedAug 14, 2026
- 9.58.1not indexedAug 14, 2026
github.com/PlaceOS/models
PlaceOS entity models.
Nothing has been indexed for 9.107.6 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.
Installation
# Add this to your shard.yml
dependencies:
placeos-models:
github: PlaceOS/models
version: ~> 9.107.6Then run:
shards installshard.yml
No shard.yml has been indexed for 9.107.6. You can read it on the repository.
Dependencies
Unknown: the shard.yml for this version has not been read yet.
README
This README is the one indexed from the repository at its latest ref, not from the tag for this version.
PlaceOS Models
The database models for PlaceOS in crystal.
PlaceOS is a distributed application, with many concurrent event sources that require persistence. We use RethinkDB to unify our database and event bus, giving us a consistent interface to state and events across the system.
Configuration
Environment
| Key | Description | Default |
|---|---|---|
PLACE_MAX_VERSIONS | Number of versions to keep of versioned models | 20 |
PG_HOST | Postgresql host | "localhost" |
PG_PORT | Postgresql port | 5432 |
PG_DB | Database name or PG_DATABASE | "test" |
PG_USER | Database user | "postgres" |
PG_PASSWORD | Database password | "" |
PG_QUERY | Query string, that can be used to configure pooling | "" |
PG_LOCK_TIMEOUT | Timeout on retrying Advisory lock in seconds | 5 |
PG_DATABASE_URL | Or provide a Database DSN |
Runtime changefeed notifications
These models declare the fields that can change without notifying running services:
| Model | Ignored update columns |
|---|---|
Module | updated_at, has_runtime_error, error_timestamp |
Driver | name, description, update_available, update_info, compilation_output, updated_at, search_vector |
Zone | name, description, display_name, playlists, images, updated_at, search_vector |
ControlSystem | signage_last_seen, playlist_item_id, name, description, version, updated_at, playlists, orientation, search_vector |
The SQL trigger skips CDC rows and notifications when an update changes only ignored fields; the values still persist. Automatic updated_at and generated search_vector changes are included so ordinary metadata saves stay silent. Changes to other columns still notify, even when the same write changes ignored fields. Inserts and deletes are unchanged. Driver saves also skip saving associated modules whose copied name and role already match, preventing redundant module events; Driver.module_name and role changes still synchronize associated modules and emit their events. Driver.module_name, Module.name and ControlSystem.display_name are not ignored. Setting or clearing ControlSystem display_name emits an update.
Policies apply to every writer once the model's changefeed is registered. No-op updates on these tables are also silent. Consumers that need current metadata or signage configuration should read PostgreSQL rather than rely on these changefeeds. created_at and other unlisted fields remain notification-producing.
Deploy EventBus 1.1.0 or newer to every service that installs CDC triggers before enabling filtering. Older installers can restore the combined trigger and produce unwanted or duplicate events. pg-orm 2.4.1 or newer passes the model declaration, including explicit database-only columns, to EventBus; no core-side filter is required.
Module, Driver and Zone acquire their policies on first registration without a schema migration. For an existing ControlSystem policy, coordinate upgrading its subscribers and explicitly replace the installed policy before they register the new declaration. Old declarations conflict with the new policy, so avoid overlapping registration by the two versions. With the current models loaded, upgrade from the previous ten-column policy using:
EventBus.new(ENV["PG_DATABASE_URL"]).replace_cdc_update_policy(
"sys",
ignore_update_columns: PlaceOS::Model::ControlSystem.changefeed_ignored_update_columns.not_nil!,
expected_ignore_update_columns: ["signage_last_seen", "playlist_item_id", "name", "description", "display_name", "version", "updated_at", "playlists", "orientation", "search_vector"]
)
For the earlier eight-column policy, omit playlists and orientation from the expected list. If only the original two-column policy was installed, use ["signage_last_seen", "playlist_item_id"] as the expected list instead. Fresh installations need no replacement. Do not guess the installed policy or suppress a mismatch error. For rollback, use replace_cdc_update_policy with the expected current columns; merely removing a declaration preserves the installed policy.
Testing
# prune docker images if you have new migrations that need to run
# since the last time migrations image was built
docker system prune --all
# builds migrations and runs tests in a containerised env
./test
Contributing
See CONTRIBUTING.md.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
9.107.6- Tagged
- Aug 21, 2026
- Commit
9f1cf95cf123- Indexed
- not yet
Dependents
No indexed shard depends on this one yet.
Repository
github.com/PlaceOS/models
Metadata
- Created
- Aug 12, 2026
- Updated
- Sep 27, 2026
- Synced
- Sep 27, 2026
- Versions
- 116