This page was a draft. See TracDev/DatabaseSchema/NotificationSystem page now.
The Open questions section might still contain unimplemented ideas.
Trac Database Schema: Notification
The TracNotification module stores notification event subscriptions in the database.
Table notify_subscription
auto_increment
int64
int64
int 1 for authenticated session IDs, 0 for anonymous session IDs
email)
text/plain or text/html)
int Precedence level of this subscription. E.g. 1 overrules 2.
always or never
Stores if a subscription rule always/never applies for a certain user, at what priority and using what distribution method/format.
Use the trac.notification.model.Subscription model class to access this table.
Note that this table does not store an (email) address, but the commonly used subscription tuple has an additional item addr. Usually such tuples that correspond to entries in this DB table contain a addr of None. Other tuples may contain an (email) address (e.g. retrieved from a ticket CC field) but are missing the sid item instead.
See trac.notification.model.Subscription
Table notify_watch
auto_increment
int 1 for authenticated session IDs, 0 for anonymous session IDs
ticket).
Stores watches to identify the target resource(s) of a subscription (e.g. a watched ticket's id, wiki page filters, joined groups, etc.)
Use the trac.notification.model.Watch model class to access this table.
See trac.notification.model.Watch
Open Questions
Rename class column?
Something like rule might be more appropriate.
See also INotificationSubscriber.
Rename distributor column?
transport might be more consistent.
Rename tables?
The current table names are taken from the th:AnnouncerPlugin.
Would this cause problems for users that already used that plugin?
DONE Renamed subscription to notify_subscription.
DONE Renamed subscription_attribute to notify_watch.
Remove time and changetime columns?
These are not really needed.