mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-30 00:28:49 -05:00
fddb7e8c8c
Every authorship now has an author that saves the color. The author links to the session and optionally the user. For anonymous users, the session now can be used to reidentify the user. If the user is logged-in, the userId is saved into the author table. This allows to identify the user even after the session expired. A note created by an anonymous user does not have an owner. The cardinality was updated to reflect that. Signed-off-by: David Mehren <git@herrmehren.de>
179 lines
3.4 KiB
Text
179 lines
3.4 KiB
Text
@startuml
|
|
hide circle
|
|
skinparam nodesep 60
|
|
|
|
entity "note" {
|
|
*id : uuid <<generated>>
|
|
--
|
|
publicId: text
|
|
alias : text
|
|
*viewCount : number
|
|
*ownerId : uuid <<FK user>>
|
|
description: text
|
|
title: text
|
|
}
|
|
|
|
entity "user" {
|
|
*id : uuid <<generated>>
|
|
--
|
|
*userName : text
|
|
*displayName : text
|
|
*createdAt : date
|
|
*updatedAt : date
|
|
photo : text
|
|
email : text
|
|
}
|
|
|
|
entity "auth_token"{
|
|
*id : number <<generated>>
|
|
--
|
|
*userId : uuid
|
|
*keyId: text
|
|
*accessToken : text
|
|
*label: text
|
|
*createdAt: date
|
|
lastUsed: number
|
|
validUntil: number
|
|
}
|
|
|
|
entity "identity" {
|
|
*id : number
|
|
--
|
|
*userId : uuid <<FK user>>
|
|
' Identifies the external login provider and is set in the config
|
|
*providerName : text
|
|
*syncSource : boolean
|
|
*createdAt : date
|
|
*updatedAt : date
|
|
' The unique identifier of a user from the login provider
|
|
providerUserId : text
|
|
' Token used to access the OAuth provider in the users name. Can be NULL
|
|
oauthAccessToken : text
|
|
' Password hash. Can be NULL
|
|
passwordHash : text
|
|
}
|
|
|
|
entity "session" {
|
|
*id : text
|
|
--
|
|
*expiredAt : number
|
|
*json : text
|
|
}
|
|
|
|
|
|
entity "revision" {
|
|
*id : number <<generated>>
|
|
--
|
|
*noteId : uuid <<FK note>>
|
|
*content : text
|
|
*patch : text
|
|
*createdAt : date
|
|
*length : number
|
|
}
|
|
|
|
entity "authorship" {
|
|
*id : uuid <<generated>>
|
|
--
|
|
*authorId : uuid <FK user>>
|
|
*startPos : number
|
|
*endPos : number
|
|
*createdAt : date
|
|
*updatedAt : date
|
|
}
|
|
|
|
entity "revision_authorship" {
|
|
*revisionId : number <<FK revision>>
|
|
*authorshipId : uuid <<FK authorship>>
|
|
}
|
|
|
|
entity "author" {
|
|
*id : number <<generated>>
|
|
--
|
|
*color : text
|
|
sessionID : text <<FK session>>
|
|
userId : uuid <<FK user>>
|
|
}
|
|
|
|
|
|
entity "note_user_permission" {
|
|
*userId : uuid <<FK user>>
|
|
*noteId : uuid <<FK note>>
|
|
--
|
|
*canEdit : boolean
|
|
}
|
|
|
|
entity "group" {
|
|
*id : number <<generated>>
|
|
--
|
|
*name : text <<unique>>
|
|
*displayName : text
|
|
' Is set to denote a special group
|
|
' Special groups are used to map the old share settings like "everyone can edit"
|
|
' or "logged in users can view" to the group permission system
|
|
*special : boolean
|
|
}
|
|
|
|
entity "note_group_permission" {
|
|
*groupId : number <<FK group>>
|
|
*noteId : uuid <<FK note>>
|
|
--
|
|
*canEdit : boolean
|
|
}
|
|
|
|
entity "group_members_user" {
|
|
*group : number <<FK group>>
|
|
*member : uuid <<FK user>>
|
|
}
|
|
|
|
entity "tag" {
|
|
*id: number <<generated>>
|
|
*name: text
|
|
}
|
|
|
|
entity "media_upload" {
|
|
*id : text <<unique>>
|
|
--
|
|
*noteId : uuid <<FK note>>
|
|
*userId : uuid <<FK user>>
|
|
*backendType: text
|
|
*fileUrl: text
|
|
backendData: text
|
|
*createdAt : date
|
|
}
|
|
|
|
entity "history_entry" {
|
|
*noteId : uuid <<FK note>>
|
|
*userId : uuid <<FK user>>
|
|
--
|
|
*pinStatus: boolean
|
|
*updatedAt: date
|
|
}
|
|
|
|
user "0..1" -- "0..*" note: owner
|
|
user "1" -u- "1..*" identity
|
|
user "1" -l- "1..*" auth_token: authTokens
|
|
user "1" -r- "1..*" session
|
|
user "1" -- "0..*" media_upload
|
|
user "1" -- "0..*" history_entry
|
|
user "0..*" -- "0..*" note
|
|
user "0..1" -- "0..*" author
|
|
|
|
author "1" -- "0..*" authorship
|
|
author "1" -u- "0..*" session
|
|
|
|
revision "0..*" -- "0..*" authorship
|
|
(revision, authorship) .. revision_authorship
|
|
|
|
media_upload "0..*" -- "1" note
|
|
note "1" -d- "1..*" revision
|
|
note "1" - "0..*" history_entry
|
|
note "0..*" -l- "0..*" tag
|
|
note "0..*" -- "0..*" group
|
|
user "1..*" -- "0..*" group
|
|
|
|
user "0..*" -- "0..*" note
|
|
(user, note) . note_user_permission
|
|
(note, group) . note_group_permission
|
|
(user, group) . group_members_user
|
|
|
|
@enduml
|