Rust-Datenmodell für Typo3: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „== Überblick == Dieses Datenmodell bildet zentrale '''TYPO3'''-Konzepte als reine Rust-''structs'' und ''enums'' ab: Seiten (<code>pages</code>), Inhaltselemente (<code>tt_content</code>), Sprachen, Workspaces, Benutzer und Datei-Referenzen. Es enthält '''keine''' Datenbank- oder API-Logik, sondern nur die Datenstrukturen selbst. Der vollständige Quellcode liegt in der Datei <code>typo3_model.rs</code>. == Basistypen == Kleine Alias-Typen für lesb…“
 
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
== Überblick ==
== Überblick ==


Zeile 223: Zeile 224:
* '''Record''' fasst '''Page''', '''ContentElement''' und '''FileReference''' als Summentyp zusammen
* '''Record''' fasst '''Page''', '''ContentElement''' und '''FileReference''' als Summentyp zusammen
* '''Workspace''' referenziert '''BackendUser'''s über <code>members</code> (nur als <code>Uid</code>, keine Einbettung)
* '''Workspace''' referenziert '''BackendUser'''s über <code>members</code> (nur als <code>Uid</code>, keine Einbettung)
 
==Hinweis==
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
== Siehe auch ==
== Siehe auch ==



Aktuelle Version vom 12. August 2026, 14:14 Uhr

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Überblick

Dieses Datenmodell bildet zentrale TYPO3-Konzepte als reine Rust-structs und enums ab: Seiten (pages), Inhaltselemente (tt_content), Sprachen, Workspaces, Benutzer und Datei-Referenzen. Es enthält keine Datenbank- oder API-Logik, sondern nur die Datenstrukturen selbst.

Der vollständige Quellcode liegt in der Datei typo3_model.rs.

Basistypen

Kleine Alias-Typen für lesbarere Signaturen:

Typ Rust-Definition Bedeutung
Uid u64 Eindeutige Datensatz-ID (TYPO3: immer positiv)
Pid i64 Seiten-/Storage-ID; 0 = Root
LanguageUid i32 Sprach-UID; -1 = alle Sprachen, 0 = Standardsprache
ColPos i32 Spaltenposition im Backend-Layout (0 = Main, 1 = Sidebar, …)

Enums

Doktype

Seitentyp (doktype-Feld der Tabelle pages), bestimmt das Frontend-Verhalten einer Seite.

pub enum Doktype {
    Standard = 1,
    Link = 3,
    Shortcut = 4,
    BackendUserSection = 6,
    MountPoint = 7,
    Spacer = 199,
    Sysfolder = 254,
    Recycler = 255,
}

CType

Inhaltstyp (CType-Feld der Tabelle tt_content). Deckt die Core-Typen ab; Plugin und Other fangen Extension-/Plugin-Inhalte auf.

pub enum CType {
    Header,
    Text,
    Textmedia,
    Image,
    Bullets,
    Table,
    Uploads,
    Html,
    Plugin { list_type: String },
    Other(String),
}

WorkspaceStage

Freigabestatus eines Datensatzes innerhalb eines Workspace.

pub enum WorkspaceStage {
    Editing,
    ReadyToPublish,
    ReadyToPreview,
}

Record

Getaggter Wrapper, um Datensätze unterschiedlichen Typs (z. B. in Suchergebnislisten) einheitlich zu behandeln.

pub enum Record {
    Page(Page),
    Content(ContentElement),
    File(FileReference),
}

Structs

Visibility

Wiederverwendbare Sichtbarkeits-/Zeitsteuerung, wie sie in TYPO3 auf fast jedem Datensatz-Typ vorkommt.

Feld Typ Bedeutung
hidden bool Datensatz manuell ausgeblendet
deleted bool Datensatz (soft-)gelöscht
starttime i64 Unix-Timestamp ab Sichtbarkeit (0 = sofort)
endtime i64 Unix-Timestamp bis Sichtbarkeit (0 = unbegrenzt)
fe_groups Vec<Uid> Frontend-Gruppen mit Zugriff (leer = öffentlich)

Localization

Lokalisierungs-Beziehung eines Datensatzes (Connected Mode).

Feld Typ Bedeutung
sys_language_uid LanguageUid Sprache dieses Datensatzes
l10n_parent Option<Uid> uid des Originals in der Standardsprache

Page

Eine TYPO3-Seite (Tabelle pages).

pub struct Page {
    pub uid: Uid,
    pub pid: Pid,
    pub doktype: Doktype,
    pub title: String,
    pub slug: String,
    pub sorting: i64,
    pub nav_title: Option<String>,
    pub is_siteroot: bool,
    pub visibility: Visibility,
    pub localization: Localization,
    pub content_elements: Vec<ContentElement>,
}

ContentElement

Ein Inhaltselement (Tabelle tt_content).

pub struct ContentElement {
    pub uid: Uid,
    pub pid: Pid,
    pub ctype: CType,
    pub col_pos: ColPos,
    pub sorting: i64,
    pub header: Option<String>,
    pub bodytext: Option<String>,
    pub visibility: Visibility,
    pub localization: Localization,
    pub media: Vec<FileReference>,
}

FileReference

Datei-Referenz (Tabelle sys_file_reference).

pub struct FileReference {
    pub uid: Uid,
    pub file_uid: Uid,
    pub title: Option<String>,
    pub alternative: Option<String>,
    pub description: Option<String>,
    pub sorting: i64,
}

SysLanguage

Sprachdefinition (Tabelle sys_language).

pub struct SysLanguage {
    pub uid: LanguageUid,
    pub title: String,
    pub language_iso_code: String,
    pub flag_identifier: Option<String>,
}

Workspace

Ein Workspace (Tabelle sys_workspace).

pub struct Workspace {
    pub uid: Uid,
    pub title: String,
    pub stage: WorkspaceStage,
    pub members: Vec<Uid>,
}

BackendUser / FrontendUser

Benutzerkonten aus be_users bzw. fe_users.

pub struct BackendUser {
    pub uid: Uid,
    pub username: String,
    pub is_admin: bool,
    pub usergroups: Vec<Uid>,
    pub disable: bool,
}

pub struct FrontendUser {
    pub uid: Uid,
    pub username: String,
    pub usergroups: Vec<Uid>,
    pub visibility: Visibility,
}

Beziehungen zwischen den Typen

  • Page enthält mehrere ContentElements (content_elements)
  • ContentElement enthält mehrere FileReferences (media)
  • Page und ContentElement nutzen beide Visibility und Localization als eingebettete structs
  • Record fasst Page, ContentElement und FileReference als Summentyp zusammen
  • Workspace referenziert BackendUsers über members (nur als Uid, keine Einbettung)

Hinweis

Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).

Siehe auch