Edgewall Software

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

TableKey
notify_subscriptionid
ColumnsTypeNotes
idauto_increment
timeint64
changetimeint64
class The name of the Python class that stored this subscription.
sid The session ID of the subscriber.
authenticatedint 1 for authenticated session IDs, 0 for anonymous session IDs
distributor Identifies the distributor to used for this subscription (e.g. email)
format Identifies the MIME type to be used for this subscription (e.g. text/plain or text/html)
priorityintPrecedence level of this subscription. E.g. 1 overrules 2.
adverb always or never
Indices
sid, authenticated
class

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

TableKey
notify_watchid
ColumnsTypeNotes
idauto_increment
sid The session ID of the subscriber.
authenticatedint 1 for authenticated session IDs, 0 for anonymous session IDs
class The name of the Python class that stored this watch.
realm The realm of this subscription (e.g. ticket).
target The target of this subscription (e.g. a ticket id).
Indices
sid, authenticated, class
class, realm, target

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.

Last modified 3 years ago Last modified on Dec 20, 2014, 7:57:14 PM
Note: See TracWiki for help on using the wiki.