Volver a la wiki

Tabla D1: directions — Agenda de contactos del workspace

Tabla D1: directions

Tabla SQLite/D1 que persiste la agenda compartida de personas y empresas del staff de CreaRack. Sin foreign keys (FK-less by design) para permitir crear contactos sin forzar la existencia previa de la empresa. Soft-delete mediante archived_at.

Migración: migrations/0020_create_directions.sql
Seed inicial: migrations/0021_seed_directions.sql


Esquema

CREATE TABLE IF NOT EXISTS directions (
  id          INTEGER PRIMARY KEY AUTOINCREMENT,
  type        TEXT NOT NULL CHECK(type IN ('person','company')),
  name        TEXT NOT NULL,
  nif         TEXT,
  company     TEXT,
  role        TEXT,
  email       TEXT,
  phone       TEXT,
  linkedin    TEXT,
  street      TEXT,
  zip         TEXT,
  city        TEXT,
  province    TEXT,
  country     TEXT DEFAULT 'España',
  tags        TEXT,
  notes       TEXT,
  archived_at TEXT,
  owner_id    TEXT,
  created_at  TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at  TEXT NOT NULL DEFAULT (datetime('now'))
);

Índices

ÍndiceColumnaJustificación
idx_directions_typetypeFiltro persona/empresa es el más frecuente
idx_directions_archivedarchived_atExcluir archivados en todas las queries de lista
idx_directions_citycityFiltro geográfico futuro
idx_directions_ownerowner_idFiltro por creador (auditoría)

Campos destacados

CampoTipoNotas
typeTEXTConstraint CHECK(type IN ('person','company')). Obligatorio.
nameTEXTObligatorio. Máx 200 chars (validado en API).
tagsTEXTCSV libre: "cliente,proveedor,infra". Sin tabla auxiliar ni FK.
companyTEXTPara type='person': empresa donde trabaja (free-form, no FK).
archived_atTEXTISO 8601. NULL = activo. Soft-delete reversible.
owner_idTEXTEmail del creador extraído de CF Access (cf-access-authenticated-user-email).
countryTEXTDefault 'España'.
linkedinTEXTURL completa o solo el username (la UI normaliza al renderizar).

Seed inicial (migración 0021)

Staff CreaRack

NombreRolEmail
Edu EsquembriCEO · Devedudomo2@gmail.com
DaniDevdani@crearack.com
TxellCOOtxell@crearack.com

Proveedores

EmpresaTags
Hetzner Online GmbHproveedor, infra, hosting
Cloudflare Inc.proveedor, infra, cdn
Resend Inc.proveedor, email
Holded SLproveedor, erp
GitHub Inc.proveedor, code

Acceso desde la API

Los endpoints que escriben esta tabla son CF Pages Functions:

Para archivar/desarchivar sin borrar: PUT /api/directions/:id con { "archived": true|false }.


Decisiones de diseño


Véase también

Subir