feat(forgejo): added readable markdown for the repo-org model of forgejo

This commit is contained in:
Stephan Lo 2025-06-30 09:22:21 +02:00
parent 19c30cfa51
commit 0b057afe0d
10 changed files with 121 additions and 100 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View file

@ -1,3 +1,23 @@
# Forgejo's entities' relations repo, organisation, team, user
## small: only one comment
![alt text](org-repo-user-small.png)
## normal model
![alt text](org-repo-user.png)
## large
![alt text](org-repo-user-large.png)
## large packaged
![alt text](org-repo-user-large-packaged.png)
Das `owners`-Team in Gitea/Forgejo ist **etwas Besonderes** und tatsächlich **hardcoded** hier sind die Details: Das `owners`-Team in Gitea/Forgejo ist **etwas Besonderes** und tatsächlich **hardcoded** hier sind die Details:
--- ---

View file

@ -1,57 +0,0 @@
@startuml
package "Forgejo/Gitea User-Organisation-Repo-Modell" {
class User {
+ id: int
+ username: string
+ email: string
}
class Organisation {
+ id: int
+ name: string
}
class OrgMember {
+ user_id: int
+ org_id: int
+ is_owner: bool
+ role: string
}
class Team {
+ id: int
+ org_id: int
+ name: string
+ permission_level: string
}
class Repository {
+ id: int
+ owner_id: int
+ name: string
+ is_private: bool
}
User "1" -- "0..*" OrgMember : membership
Organisation "1" -- "0..*" OrgMember : members
Organisation "1" -- "0..*" Team : teams
Team "1" -- "0..*" User : members
Team "1" -- "0..*" Repository : repos
Organisation "1" -- "0..*" Repository : owns
note right of OrgMember
Owner (is_owner = true) kann:
- Organisation verwalten
- Teams erstellen/löschen
- Mitglieder verwalten
end note
note left of Repository
Zugriff durch Teams nur möglich, wenn
Repository zu Organisation gehört.
Owner können Repository voll verwalten.
end note
}
@enduml

View file

@ -1,62 +1,58 @@
@startuml @startuml
left to right direction scale 500 width
skinparam linetype ortho package "Forgejo/Gitea User-Organisation-Repo-Modell" {
skinparam classAttributeIconSize 0
hide circle
' Gruppierungen
package "Systemweite Benutzer und Rollen" {
class User { class User {
+username + id: int
+email + username: string
+isAdmin + email: string
} }
note right of User
Kann Organisationen erstellen
Kann eigenen Namespace verwalten
Kann systemweiter Admin sein
end note
}
package "Organisation" {
class Organisation { class Organisation {
+name + id: int
+visibility + name: string
}
class Team {
+name
+permissionLevel
+canCreateRepos
} }
class OrgMember { class OrgMember {
+role: member / owner + user_id: int
+ org_id: int
+ is_owner: bool
+ role: string
} }
Organisation "1" -- "0..*" Team : verwaltet > class Team {
Organisation "1" -- "0..*" OrgMember : hat Mitglieder > + id: int
User "1" -- "0..*" OrgMember : ist > + org_id: int
+ name: string
+ permission_level: string
}
OrgMember "1" -- "0..*" Team : gehört zu >
}
package "Repository" {
class Repository { class Repository {
+name + id: int
+visibility + owner_id: int
+owner: User|Organisation + name: string
+ is_private: bool
} }
Team "1" -- "0..*" Repository : Zugriff auf > User "1" -- "0..*" OrgMember : membership
User "1" -- "0..*" Repository : direkte Rechte (optional) > Organisation "1" -- "0..*" OrgMember : members
Organisation "1" -- "0..*" Team : teams
Team "1" -- "0..*" User : members
Team "1" -- "0..*" Repository : repos
note right of Repository Organisation "1" -- "0..*" Repository : owns
Teams können nur auf Repositories zugreifen,
die zur selben Organisation gehören. note right of OrgMember
Nutzer-Repos können nicht über Teams geteilt werden. Owner (is_owner = true) kann:
- Organisation verwalten
- Teams erstellen/löschen
- Mitglieder verwalten
end note
note left of Repository
Zugriff durch Teams nur möglich, wenn
Repository zu Organisation gehört.
Owner können Repository voll verwalten.
end note end note
} }
@enduml @enduml

View file

@ -0,0 +1,62 @@
@startuml
left to right direction
skinparam linetype ortho
skinparam classAttributeIconSize 0
hide circle
' Gruppierungen
package "Systemweite Benutzer und Rollen" {
class User {
+username
+email
+isAdmin
}
note right of User
Kann Organisationen erstellen
Kann eigenen Namespace verwalten
Kann systemweiter Admin sein
end note
}
package "Organisation" {
class Organisation {
+name
+visibility
}
class Team {
+name
+permissionLevel
+canCreateRepos
}
class OrgMember {
+role: member / owner
}
Organisation "1" -- "0..*" Team : verwaltet >
Organisation "1" -- "0..*" OrgMember : hat Mitglieder >
User "1" -- "0..*" OrgMember : ist >
OrgMember "1" -- "0..*" Team : gehört zu >
}
package "Repository" {
class Repository {
+name
+visibility
+owner: User|Organisation
}
Team "1" -- "0..*" Repository : Zugriff auf >
User "1" -- "0..*" Repository : direkte Rechte (optional) >
note right of Repository
Teams können nur auf Repositories zugreifen,
die zur selben Organisation gehören.
Nutzer-Repos können nicht über Teams geteilt werden.
end note
}
@enduml