Table of Contents

Class ThargaTeamOptions

Namespace
Tharga.Team.MongoDB
Assembly
Tharga.Team.MongoDB.dll
public record ThargaTeamOptions : IEquatable<ThargaTeamOptions>
Inheritance
ThargaTeamOptions
Implements
Inherited Members

Fields

DefaultContactMailSuppressionCollectionName

public const string DefaultContactMailSuppressionCollectionName = "ContactMailSuppression"

Field Value

string

DefaultContactMessageCollectionName

public const string DefaultContactMessageCollectionName = "ContactMessage"

Field Value

string

DefaultSupportAttachmentBucketName

The default for SupportAttachmentBucketName.

public const string DefaultSupportAttachmentBucketName = "SupportAttachment"

Field Value

string

DefaultUserMailBatchCollectionName

The default for UserMailBatchCollectionName.

public const string DefaultUserMailBatchCollectionName = "UserMailBatch"

Field Value

string

DefaultUserMailCollectionName

The default for UserMailCollectionName.

public const string DefaultUserMailCollectionName = "UserMail"

Field Value

string

DefaultUserMailPreferenceCollectionName

public const string DefaultUserMailPreferenceCollectionName = "UserMailPreference"

Field Value

string

DefaultUserMailRetention

The default for UserMailRetention.

public static readonly TimeSpan DefaultUserMailRetention

Field Value

TimeSpan

DefaultUserMessageCollectionName

The default for UserMessageCollectionName.

public const string DefaultUserMessageCollectionName = "UserMessage"

Field Value

string

DefaultUserNoticeCollectionName

The default for UserNoticeCollectionName.

public const string DefaultUserNoticeCollectionName = "UserNotice"

Field Value

string

DefaultUserNoticeItemCollectionName

public const string DefaultUserNoticeItemCollectionName = "UserNoticeItem"

Field Value

string

DefaultUserNoticePreferenceCollectionName

public const string DefaultUserNoticePreferenceCollectionName = "UserNoticePreference"

Field Value

string

DefaultUserNoticeRetention

The default for UserNoticeRetention.

public static readonly TimeSpan DefaultUserNoticeRetention

Field Value

TimeSpan

DefaultUserNoticeStreamCollectionName

public const string DefaultUserNoticeStreamCollectionName = "UserNoticeStream"

Field Value

string

DefaultUserNoticeTeamDefaultCollectionName

public const string DefaultUserNoticeTeamDefaultCollectionName = "UserNoticeTeamDefault"

Field Value

string

Properties

CheckMemberAccessLevels

Whether to report, at startup, stored team members that carry no access level and therefore, since 4.0, have no access to their team. Default true.

public bool CheckMemberAccessLevels { get; set; }

Property Value

bool

Remarks

On by default because the condition it finds changed meaning in 4.0. Before it, a member with no stored level was silently an Owner; since then they are silently refused. That is the safe direction, but it can lock out a team's original owner on upgrade, and nothing else in the logs says why.

The cost of leaving it on is one count query per start, which returns immediately on a deployment with nothing to report. Set false once the data is corrected, or if the startup query is unwelcome.

ContactMailSuppressionCollectionName

Collection holding the addresses that opted out of contact mail, kept for good, default ContactMailSuppression.

public string ContactMailSuppressionCollectionName { get; set; }

Property Value

string

ContactMessageCollectionName

Collection holding the log of messages staff sent to contacts, each with the list it was sent to, kept for UserMailRetention, default ContactMessage.

public string ContactMessageCollectionName { get; set; }

Property Value

string

DataProtectionKeyCollectionName

Collection holding the Data Protection key ring, when PersistKeysToThargaMongo keeps it here. Default DataProtectionKey.

public string DataProtectionKeyCollectionName { get; set; }

Property Value

string

IconCollectionName

MongoDB collection name for icon documents (the built-in MongoIconStore). Default is "Icon".

public string IconCollectionName { get; set; }

Property Value

string

IconSettingsCollectionName

Collection holding the site's icon settings (the built-in MongoIconSettingsStore). One document. Default is "IconSettings".

public string IconSettingsCollectionName { get; set; }

Property Value

string

InboundMailCollectionName

Collection holding received mail for teams' mailboxes and the postmaster — the envelope only; the raw message is kept by the host's content store. Default InboundMail.

public string InboundMailCollectionName { get; set; }

Property Value

string

SupportAiConnectionCollectionName

Collection holding each team's AI connection for the support assistant, one document per team, the key only encrypted. Default SupportAiConnection.

public string SupportAiConnectionCollectionName { get; set; }

Property Value

string

SupportAssistantUsageCollectionName

Collection holding the support assistant's usage, one document per time it was asked. Default SupportAssistantUsage.

public string SupportAssistantUsageCollectionName { get; set; }

Property Value

string

SupportAttachmentBucketName

GridFS bucket holding the files support messages carry, beside the support cases. Default SupportAttachment.

public string SupportAttachmentBucketName { get; set; }

Property Value

string

SupportCaseCollectionName

Collection holding support cases and their transcripts. Default SupportCase.

public string SupportCaseCollectionName { get; set; }

Property Value

string

SupportEventLedgerCollectionName

Collection remembering which inbound channel events have been handled. Default SupportEventLedger.

public string SupportEventLedgerCollectionName { get; set; }

Property Value

string

SupportEventLedgerRetention

How long a handled event is remembered. Default 24 hours.

public TimeSpan SupportEventLedgerRetention { get; set; }

Property Value

TimeSpan

Remarks

Only has to outlast the channel's own retry window - Slack gives up long before a day - so this is generous. Entries expire by TTL index rather than accumulating.

SupportMailPositionCollectionName

Collection remembering how far the support mailbox has been read. Default SupportMailPosition.

public string SupportMailPositionCollectionName { get; set; }

Property Value

string

TeamCollectionName

MongoDB collection name for team documents. Default is "Team".

public string TeamCollectionName { get; set; }

Property Value

string

TeamMailKeyCollectionName

Collection holding each team's mail keys, one document per team. Default TeamMailKey.

public string TeamMailKeyCollectionName { get; set; }

Property Value

string

UserCollectionName

MongoDB collection name for user documents. Default is "User".

public string UserCollectionName { get; set; }

Property Value

string

UserMailBatchCollectionName

Collection holding the content one mail to many users shares, stored once, default UserMailBatch.

public string UserMailBatchCollectionName { get; set; }

Property Value

string

UserMailCollectionName

Collection holding queued mail to users and what became of it, default UserMail.

public string UserMailCollectionName { get; set; }

Property Value

string

UserMailPreferenceCollectionName

Collection holding users' mail choices that differ from a category's default, default UserMailPreference.

public string UserMailPreferenceCollectionName { get; set; }

Property Value

string

UserMailRetention

How long a mail to a user is kept once sent, skipped or given up, a batch once its last mail is, and a sent message from when it was sent; default 90 days.

public TimeSpan UserMailRetention { get; set; }

Property Value

TimeSpan

UserMessageCollectionName

Collection holding the log of messages staff sent to users, default UserMessage.

public string UserMessageCollectionName { get; set; }

Property Value

string

UserNoticeCollectionName

Collection holding raised notice occurrences until they are distributed, default UserNotice.

public string UserNoticeCollectionName { get; set; }

Property Value

string

UserNoticeItemCollectionName

Collection holding each user's notices until and after they are mailed, default UserNoticeItem.

public string UserNoticeItemCollectionName { get; set; }

Property Value

string

UserNoticePreferenceCollectionName

Collection holding users' notice choices that differ from a default, default UserNoticePreference.

public string UserNoticePreferenceCollectionName { get; set; }

Property Value

string

UserNoticeRetention

How long a distributed occurrence and a mailed notice are kept, which is also how long an occurrence raised again is recognised and not sent twice; default 90 days.

public TimeSpan UserNoticeRetention { get; set; }

Property Value

TimeSpan

UserNoticeStreamCollectionName

Collection holding when each user's next notice mail is due, default UserNoticeStream.

public string UserNoticeStreamCollectionName { get; set; }

Property Value

string

UserNoticeTeamDefaultCollectionName

Collection holding teams' notice defaults that differ from the catalogue's, default UserNoticeTeamDefault.

public string UserNoticeTeamDefaultCollectionName { get; set; }

Property Value

string

Methods

RegisterTeamRepository<TTeamEntity, TTeamMemberModel>()

public void RegisterTeamRepository<TTeamEntity, TTeamMemberModel>() where TTeamEntity : TeamEntityBase<TTeamMemberModel> where TTeamMemberModel : TeamMemberBase

Type Parameters

TTeamEntity
TTeamMemberModel

RegisterUserRepository<TUserEntity>()

Registers the User repository using the built-in UserRepositoryCollection<TUserEntity>. Use the RegisterUserRepository<TUserEntity, TCollection> overload to register a consumer subclass that declares additional per-deployment indices.

public void RegisterUserRepository<TUserEntity>() where TUserEntity : EntityBase, IUser

Type Parameters

TUserEntity

RegisterUserRepository<TUserEntity, TCollection>()

Registers the User repository with a consumer-provided collection subclass. Use this when you need to add per-deployment indices on top of the built-in unique Identity index (e.g. a unique index on a custom email field).

public void RegisterUserRepository<TUserEntity, TCollection>() where TUserEntity : EntityBase, IUser where TCollection : UserRepositoryCollection<TUserEntity>

Type Parameters

TUserEntity
TCollection