1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
[]
= "sofie-db"
= "The handler model (inputs, events, replies), aggregates, read models, the query builder, the unit of work, migrations, the worker and the database seam."
= true
= true
= true
= true
= true
= true
# Each feature is a part of the ORM that not every app needs; an app enables
# the ones its aggregates and read models use.
[]
= []
# The `SoftDelete` behavior: deleted records kept, hidden from reads unless
# they ask with `with_trashed()`.
= []
= ["dep:unicode-normalization"]
= []
= []
# Work answered once per key: idempotent requests and webhook deliveries.
= []
# `Query::paginate`: one page of records, and whether another follows.
= []
# Sorting and filtering by a field a request names, for list screens.
= ["pagination", "sofie-values/filter"]
# What resources do to any aggregate: delete it softly, or read the DTO of
# the fields it exposes.
= ["listing", "contracts"]
# Modules reaching each other: `Dep` and `Extensions` arguments, batch
# lookups, change events of exposed fields, mirrors.
= []
# Split apps: each app's events kept in a feed others pull by cursor
# (`Feeds::attach`), and a contract's implementation read
# back for its server (`provided`).
= ["contracts", "serde/derive"]
# Actions queued as jobs by handlers (`Jobs`, `Queued`), now or at an instant.
= ["contracts"]
# Jobs at a wall-clock time in an IANA zone, once, daily or weekly (`LocalJobs`).
= ["jobs", "sofie-values/time"]
# `Read::sql`: raw SQL, read-only, for what the builder cannot write.
= []
# Raw SQL runs as the database role of its read model's module, which the
# module's role migration (`sofie gen`) creates, so it reaches no other module.
= ["raw-sql"]
# Migrations building an index `CONCURRENTLY`, each alone in its file, run
# outside a transaction under the migrations lock, as `sofie check` asks of an
# index on a table an earlier migration created.
= []
# `Schema::fresh`: every module's schema dropped and migrated again, for a
# development database.
= []
# `Schema::migration_status`: each migration applied, pending, edited after
# being applied or missing as a file, for `db status`.
= []
# `Query::stream`: every matching record, in batches.
= []
= []
= []
# Every row a task reads, fingerprinted for `ETag`s (`track_reads`).
= []
# Committed changes told to open screens (`Db::changes`), here and through
# the database's notifications, and the tables a task read (`track_topics`).
= []
# The shield's blocks shared between instances (`SharedBlocks`).
= []
# What a cache needs of the database: hooks run with the records each
# commit wrote (`CommitHook`) and the payloads notified on `sofie_cache`.
= []
# Statement durations, busy connections, message lag and outcomes, recorded
# through sofie-telemetry's metrics.
= ["sofie-telemetry/metrics"]
# `Prune`: a scheduled job deleting records past their retention, in batches.
= []
# `Searched`: full-text search over the fields whose values are searched by their words.
= []
# `Searched` aggregates kept in a search engine (`install_search`): indexed by
# jobs after each commit, matched by the engine's ids.
= ["search", "jobs"]
# Product events written to `sofie.product_events` and read back as cohorts.
= ["retention", "sofie-telemetry/product-events"]
# `keep_raised` and `raised`: each event a commit raised, kept in memory for test assertions.
= []
[]
= true
= true
= true
= true
= true
= true
= { = true, = ["sync", "time"] }
= true
= { = true, = true }
[]
# The unit tests' aggregate keeps its deleted records, and they read the raised log.
= { = ".", = ["soft-delete", "testing"] }
= { = true, = ["macros", "test-util"] }
[]
= true
[]
= true