KasarKasar Docs
Types de champs

Types composes

EMAILS, PHONES

Les types composes creent automatiquement une table enfant liee par cle etrangere a l'objet parent. Ils n'ont pas de colonne sur la table parente.

EMAILS

Stocke plusieurs adresses email par enregistrement dans une table enfant dediee.

ProprieteValeur
SQLAucune colonne sur la table parente (virtuel)
Table enfant{objet}_emails (ex : contacts_emails)

Structure de la table enfant :

CREATE TABLE "contacts_emails" (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  contact_id UUID NOT NULL,          -- FK → contacts (CASCADE)
  email_address VARCHAR(255) NOT NULL,
  is_primary BOOLEAN DEFAULT false,
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW(),
  deleted_at TIMESTAMP DEFAULT NULL
)
CREATE UNIQUE INDEX "idx_contacts_emails_unique_email"
  ON "contacts_emails" ("contact_id", "email_address")

La table enfant est un objet systeme cache (isHidden: true, isSystem: true). Le champ email_address est indexe pour la recherche.

PHONES

Stocke plusieurs numeros de telephone par enregistrement dans une table enfant dediee.

ProprieteValeur
SQLAucune colonne sur la table parente (virtuel)
Table enfant{objet}_phones (ex : contacts_phones)

Structure de la table enfant :

CREATE TABLE "contacts_phones" (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  contact_id UUID NOT NULL,          -- FK → contacts (CASCADE)
  phone_number VARCHAR(50) NOT NULL,
  is_primary BOOLEAN DEFAULT false,
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW(),
  deleted_at TIMESTAMP DEFAULT NULL
)
CREATE UNIQUE INDEX "idx_contacts_phones_unique_phone"
  ON "contacts_phones" ("contact_id", "phone_number")

On this page