- 
                  
                  DeclarationSwift func registerRoutes(_ app: Application) throws
- 
                  categoryIDParamExtension methodDeclarationSwift var categoryIDParam: PathComponent { get }
- 
                  twarrtIDParamExtension methodDeclarationSwift var twarrtIDParam: PathComponent { get }
- 
                  forumIDParamExtension methodDeclarationSwift var forumIDParam: PathComponent { get }
- 
                  postIDParamExtension methodDeclarationSwift var postIDParam: PathComponent { get }
- 
                  fezIDParamExtension methodDeclarationSwift var fezIDParam: PathComponent { get }
- 
                  fezPostIDParamExtension methodDeclarationSwift var fezPostIDParam: PathComponent { get }
- 
                  userIDParamExtension methodDeclarationSwift var userIDParam: PathComponent { get }
- 
                  eventIDParamExtension methodDeclarationSwift var eventIDParam: PathComponent { get }
- 
                  reportIDParamExtension methodDeclarationSwift var reportIDParam: PathComponent { get }
- 
                  modStateParamExtension methodDeclarationSwift var modStateParam: PathComponent { get }
- 
                  announcementIDParamExtension methodDeclarationSwift var announcementIDParam: PathComponent { get }
- 
                  alertwordParamExtension methodDeclarationSwift var alertwordParam: PathComponent { get }
- 
                  mutewordParamExtension methodDeclarationSwift var mutewordParam: PathComponent { get }
- 
                  searchStringParamExtension methodDeclarationSwift var searchStringParam: PathComponent { get }
- 
                  dailyThemeIDParamExtension methodDeclarationSwift var dailyThemeIDParam: PathComponent { get }
- 
                  accessLevelParamExtension methodDeclarationSwift var accessLevelParam: PathComponent { get }
- 
                  boardgameIDParamExtension methodDeclarationSwift var boardgameIDParam: PathComponent { get }
- 
                  songIDParamExtension methodDeclarationSwift var songIDParam: PathComponent { get }
- 
                  mkSongIDParamExtension methodDeclarationSwift var mkSongIDParam: PathComponent { get }
- 
                  mkSnippetIDParamExtension methodDeclarationSwift var mkSnippetIDParam: PathComponent { get }
- 
                  userRoleParamExtension methodDeclarationSwift var userRoleParam: PathComponent { get }
- 
                  phonecallParamExtension methodDeclarationSwift var phonecallParam: PathComponent { get }
- 
                  scheduleLogIDParamExtension methodDeclarationSwift var scheduleLogIDParam: PathComponent { get }
- 
                  filenameParamExtension methodDeclarationSwift var filenameParam: PathComponent { get }
- 
                  imageFilenameParamExtension methodDeclarationSwift var imageFilenameParam: PathComponent { get }
- 
                  streamPhotoIDParamExtension methodDeclarationSwift var streamPhotoIDParam: PathComponent { get }
- 
                  performerIDParamExtension methodDeclarationSwift var performerIDParam: PathComponent { get }
- 
                  personalEventIDParamExtension methodDeclarationSwift var personalEventIDParam: PathComponent { get }
- 
                  huntIDParamExtension methodDeclarationSwift var huntIDParam: PathComponent { get }
- 
                  puzzleIDParamExtension methodDeclarationSwift var puzzleIDParam: PathComponent { get }
- 
                  eventUIDParamExtension methodDeclarationSwift var eventUIDParam: PathComponent { get }
- 
                  feedbackIDParamExtension methodDeclarationSwift var feedbackIDParam: PathComponent { get }
- 
                  dateFromParameter(string:Extension method) Transforms a string that might represent a date (either a Doubleor an ISO 8601 representation) into aDate, if possible.Note The representation is expected to be either a string literal Double, or a string in UTCyyyy-MM-dd'T'HH:mm:ssZformat.DeclarationSwift static func dateFromParameter(string: String) -> Date?ParametersstringThe string to be transformed. Return ValueA Dateif the conversion was successful, otherwisenil.
- 
                  guardNotSpecialAccount(_:Extension method) DeclarationSwift func guardNotSpecialAccount(_ targetUser: User) throws
- 
                  addNotifications(users:Extension method, asynchronoustype: info: creatorID: on: ) DeclarationSwift func addNotifications(users: [UUID], type: NotificationType, info: String, creatorID: UUID? = nil, on req: Request) async throws
- 
                  bookkeepUserAddedToChat(req:Extension methodmsgID: chatType: users: group: ) DeclarationSwift func bookkeepUserAddedToChat( req: Request, msgID: UUID, chatType: FezType, users: [UUID], group: inout ThrowingTaskGroup<Void, Error> ) -> [UUID]
- 
                  bookkeepNewChatMessage(req:Extension methodmsgID: chatType: users: group: creatorID: ) DeclarationSwift func bookkeepNewChatMessage(req: Request, msgID: UUID, chatType: FezType, users: [UUID], group: inout ThrowingTaskGroup<Void, Error>, creatorID: UUID? = nil) -> [UUID]
- 
                  subtractNotifications(users:Extension method, asynchronoustype: subtractCount: on: ) DeclarationSwift func subtractNotifications(users: [UUID], type: NotificationType, subtractCount: Int = 1, on req: Request) async throws
- 
                  deleteFezNotifications(userIDs:Extension method, asynchronousfez: on: ) DeclarationSwift func deleteFezNotifications(userIDs: [UUID], fez: FriendlyFez, on req: Request) async throws
- 
                  markNotificationViewed(user:Extension method, asynchronoustype: on: ) DeclarationSwift func markNotificationViewed(user: UserCacheData, type: NotificationType, on req: Request) async throws
- 
                  markNotificationViewed(for:Extension method, asynchronoustype: on: ) DeclarationSwift func markNotificationViewed(for users: [UserCacheData], type: NotificationType, on req: Request) async throws
- 
                  storeNextFollowedEvent(userID:Extension method, asynchronouson: ) DeclarationSwift func storeNextFollowedEvent(userID: UUID, on req: Request) async throws -> (Date, UUID)?
- 
                  storeNextJoinedAppointment(userID:Extension method, asynchronouson: ) DeclarationSwift func storeNextJoinedAppointment(userID: UUID, on req: Request) async throws -> (Date, UUID)?
- 
                  processImages(_:Extension method, asynchronoususage: on: ) Takes an an array of ImageUploadDataas input. Some of the input elements may be new image Data that needs procssing; some of the input elements may refer to already-processed images in our image store. Once all the ImageUploadData elements are processed, returns a[String]containing the filenames where al the images are stored. The use case here is for editing existing content with image attachments in a way that prevents re-uploading of photos that are already on the server.- req: The incoming Request, on which this processing must run.
 DeclarationSwift func processImages(_ images: [ImageUploadData], usage: ImageUsage, on req: Request) async throws -> [String]ParametersimagesThe images in ImageUploadDataformat.usageThe type of model using the image content. Return ValueThe generated names of the stored files. 
- req: The incoming 
- 
                  processImage(data:Extension method, asynchronoususage: on: ) Takes an optional image in Data form as input, produces full and thumbnail JPEG vrsions, places both the thumbnail and full image in their respective directories, and returns the generated name of the file on success, an empty string otherwise. - req: The incoming Request, on which this processing must run.
 DeclarationSwift func processImage(data: Data?, usage: ImageUsage, on req: Request) async throws -> String?ParametersdataThe uploaded image in Dataformat.usageThe type of model using the image content. Return ValueThe generated name of the stored file, or nil. 
- req: The incoming 
- 
                  regenerateThumbnail(for:Extension method, asynchronouson: ) DeclarationSwift func regenerateThumbnail(for imageSource: URL, on req: Request) async throws
- 
                  archiveImage(_:Extension methodon: ) Archives an image that is no longer needed other than for accountability tracking, by removing the full-sized image and moving the thumbnail into the archive/subdirectory of the provided base image directory.This is a synchronous operation, until such time as we can use SwiftNIO 2’s asynchronous file I/O. DeclarationSwift func archiveImage(_ image: String, on req: Request)ParametersimageThe filename of the image. imageDirThe base image directory path for the image’s context. 
 View on GitHub
            View on GitHub
          