-- Migración 003: tabla de libretas CardDAV (addressbooks). -- -- La DB es la fuente de verdad de las libretas de contactos: el ingest DAV -- itera todas las libretas registradas aquí (no solo la colección fija) y cada -- contacto guarda su collection real. Los endpoints de escritura crean libretas -- nuevas en Xandikos y las registran aquí. -- -- Aditiva e idempotente: CREATE TABLE IF NOT EXISTS + seed ON CONFLICT DO NOTHING. CREATE TABLE IF NOT EXISTS addressbooks ( slug VARCHAR PRIMARY KEY, display_name VARCHAR, collection_path VARCHAR, description VARCHAR, color VARCHAR, created_at TIMESTAMP DEFAULT now() ); -- Seed idempotente de la libreta por defecto (la que apunta config.py por -- defecto). Re-aplicar la migración no la duplica. INSERT INTO addressbooks (slug, display_name, collection_path, description, color) VALUES ('addressbook', 'Contactos', '/enmanuel/contacts/addressbook/', NULL, NULL) ON CONFLICT (slug) DO NOTHING;