---
detect_relations: true

NodeSynchronisationType:
  tableName: node_sync_types
  columns:
    id:
      type: string(32)
      primary: true
    title:
      type: string(64)
      notnull: true
    description: string
    kind:
      type: enum
      # Ein Import lädt Daten in den Contenttree - wird normalerweise über Cronjob getriggert
      # Ein Export extrahiert Inhalte des Contenttree - wird über Cronjob oder HTTP getriggert
      # Ein Sync synchronisiert Inhalte des Contenttree mit einer API - wird normalerweise über Cronjob getriggert
      values: [import, export, sync]
    managing_class:
      type: string(128)
      notnull: true

NodeSynchronisation:
  tableName: node_syncs
  columns:
    id: &ID
      type: integer
      primary: true
      autoincrement: true
      unsigned: true
    node_id:
      type: integer
      unsigned: true
      notnull: true
    tree_id:
      type: integer
      unsigned: true
      notnull: true
    synctype:
      type: string(32)
      notnull: true
    name: string(64)
    enable_http_access:
      type: boolean
      notnull: true
      default: false
  indexes:
    node_id_name:
      fields: [node_id, name]
      type: unique
  relations:
    Node:
      foreignAlias: Synchronisations
      onUpdate: cascade
      onDelete: cascade
    NodeSynchronisationType:
      local: synctype
      alias: SyncType
      foreignAlias: Synchronisations
      onUpdate: restrict
      onDelete: restrict

NodeSynchronisationAttribute:
  tableName: node_sync_attributes
  columns:
    sync_id:
      type: integer
      unsigned: true
      notnull: true
      primary: true
    name:
      type: string(64)
      notnull: true
      primary: true
    value: string
  relations:
    NodeSynchronisation:
      local: sync_id
      alias: Synchronisation
      foreignAlias: Attributes
      onUpdate: cascade
      onDelete: cascade
