Actualización del 2025-08-16 a las 13:12:01

This commit is contained in:
jlimolina 2025-08-16 13:12:01 +02:00
parent b44096b07c
commit b26e9ad87f
13 changed files with 710 additions and 222 deletions

24
init-db/01.schema.sql Normal file
View file

@ -0,0 +1,24 @@
CREATE TABLE IF NOT EXISTS continentes (id SERIAL PRIMARY KEY, nombre VARCHAR(50) NOT NULL UNIQUE);
CREATE TABLE IF NOT EXISTS categorias (id SERIAL PRIMARY KEY, nombre VARCHAR(100) NOT NULL UNIQUE);
CREATE TABLE IF NOT EXISTS paises (id SERIAL PRIMARY KEY, nombre VARCHAR(100) NOT NULL UNIQUE, continente_id INTEGER REFERENCES continentes(id) ON DELETE SET NULL);
CREATE TABLE IF NOT EXISTS feeds (id SERIAL PRIMARY KEY, nombre VARCHAR(255), descripcion TEXT, url TEXT NOT NULL UNIQUE, categoria_id INTEGER REFERENCES categorias(id) ON DELETE SET NULL, pais_id INTEGER REFERENCES paises(id) ON DELETE SET NULL, idioma CHAR(2), activo BOOLEAN DEFAULT TRUE, fallos INTEGER DEFAULT 0, last_etag TEXT, last_modified TEXT);
CREATE TABLE IF NOT EXISTS fuentes_url (id SERIAL PRIMARY KEY, nombre VARCHAR(255) NOT NULL, url TEXT NOT NULL UNIQUE, categoria_id INTEGER REFERENCES categorias(id) ON DELETE SET NULL, pais_id INTEGER REFERENCES paises(id) ON DELETE SET NULL, idioma CHAR(2) DEFAULT 'es');
CREATE TABLE IF NOT EXISTS noticias (id VARCHAR(32) PRIMARY KEY, titulo TEXT, resumen TEXT, url TEXT NOT NULL UNIQUE, fecha TIMESTAMP, imagen_url TEXT, fuente_nombre VARCHAR(255), categoria_id INTEGER REFERENCES categorias(id) ON DELETE SET NULL, pais_id INTEGER REFERENCES paises(id) ON DELETE SET NULL, tsv tsvector);
ALTER TABLE noticias ADD COLUMN IF NOT EXISTS tsv tsvector;
CREATE OR REPLACE FUNCTION noticias_tsv_trigger() RETURNS trigger AS $$
BEGIN
new.tsv := setweight(to_tsvector('spanish', coalesce(new.titulo,'')), 'A') ||
setweight(to_tsvector('spanish', coalesce(new.resumen,'')), 'B');
return new;
END
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS tsvectorupdate ON noticias;
CREATE TRIGGER tsvectorupdate
BEFORE INSERT OR UPDATE ON noticias
FOR EACH ROW EXECUTE PROCEDURE noticias_tsv_trigger();
CREATE INDEX IF NOT EXISTS noticias_tsv_idx ON noticias USING gin(tsv);

9
init-db/02-continentes.sql Executable file
View file

@ -0,0 +1,9 @@
INSERT INTO continentes (id, nombre) VALUES
(1, 'África'),
(2, 'América'),
(3, 'Asia'),
(4, 'Europa'),
(5, 'Oceanía'),
(6, 'Antártida')
ON CONFLICT (id) DO NOTHING;

18
init-db/03-categorias.sql Executable file
View file

@ -0,0 +1,18 @@
INSERT INTO categorias (nombre) VALUES
('Ciencia'),
('Cultura'),
('Deportes'),
('Economía'),
('Educación'),
('Entretenimiento'),
('Internacional'),
('Medio Ambiente'),
('Moda'),
('Opinión'),
('Política'),
('Salud'),
('Sociedad'),
('Tecnología'),
('Viajes')
ON CONFLICT DO NOTHING;

198
init-db/04-paises.sql Executable file
View file

@ -0,0 +1,198 @@
INSERT INTO paises (nombre, continente_id) VALUES
('Afganistán', 3),
('Albania', 4),
('Alemania', 4),
('Andorra', 4),
('Angola', 1),
('Antigua y Barbuda', 2),
('Arabia Saudita', 3),
('Argelia', 1),
('Argentina', 2),
('Armenia', 3),
('Australia', 5),
('Austria', 4),
('Azerbaiyán', 3),
('Bahamas', 2),
('Bangladés', 3),
('Barbados', 2),
('Baréin', 3),
('Bélgica', 4),
('Belice', 2),
('Benín', 1),
('Bielorrusia', 4),
('Birmania', 3),
('Bolivia', 2),
('Bosnia y Herzegovina', 4),
('Botsuana', 1),
('Brasil', 2),
('Brunéi', 3),
('Bulgaria', 4),
('Burkina Faso', 1),
('Burundi', 1),
('Bután', 3),
('Cabo Verde', 1),
('Camboya', 3),
('Camerún', 1),
('Canadá', 2),
('Catar', 3),
('Chad', 1),
('Chile', 2),
('China', 3),
('Chipre', 3),
('Colombia', 2),
('Comoras', 1),
('Corea del Norte', 3),
('Corea del Sur', 3),
('Costa de Marfil', 1),
('Costa Rica', 2),
('Croacia', 4),
('Cuba', 2),
('Dinamarca', 4),
('Dominica', 2),
('Ecuador', 2),
('Egipto', 1),
('El Salvador', 2),
('Emiratos Árabes Unidos', 3),
('Eritrea', 1),
('Eslovaquia', 4),
('Eslovenia', 4),
('España', 4),
('Estados Unidos', 2),
('Estonia', 4),
('Esuatini', 1),
('Etiopía', 1),
('Filipinas', 3),
('Finlandia', 4),
('Fiyi', 5),
('Francia', 4),
('Gabón', 1),
('Gambia', 1),
('Georgia', 3),
('Ghana', 1),
('Granada', 2),
('Grecia', 4),
('Guatemala', 2),
('Guinea', 1),
('Guinea-Bisáu', 1),
('Guinea Ecuatorial', 1),
('Guyana', 2),
('Haití', 2),
('Honduras', 2),
('Hungría', 4),
('India', 3),
('Indonesia', 3),
('Irak', 3),
('Irán', 3),
('Irlanda', 4),
('Islandia', 4),
('Islas Marshall', 5),
('Islas Salomón', 5),
('Israel', 3),
('Italia', 4),
('Jamaica', 2),
('Japón', 3),
('Jordania', 3),
('Kazajistán', 3),
('Kenia', 1),
('Kirguistán', 3),
('Kiribati', 5),
('Kuwait', 3),
('Laos', 3),
('Lesoto', 1),
('Letonia', 4),
('Líbano', 3),
('Liberia', 1),
('Libia', 1),
('Liechtenstein', 4),
('Lituania', 4),
('Luxemburgo', 4),
('Macedonia del Norte', 4),
('Madagascar', 1),
('Malasia', 3),
('Malaui', 1),
('Maldivas', 3),
('Malí', 1),
('Malta', 4),
('Marruecos', 1),
('Mauricio', 1),
('Mauritania', 1),
('México', 2),
('Micronesia', 5),
('Moldavia', 4),
('Mónaco', 4),
('Mongolia', 3),
('Montenegro', 4),
('Mozambique', 1),
('Namibia', 1),
('Nauru', 5),
('Nepal', 3),
('Nicaragua', 2),
('Níger', 1),
('Nigeria', 1),
('Noruega', 4),
('Nueva Zelanda', 5),
('Omán', 3),
('Países Bajos', 4),
('Pakistán', 3),
('Palaos', 5),
('Palestina', 3),
('Panamá', 2),
('Papúa Nueva Guinea', 5),
('Paraguay', 2),
('Perú', 2),
('Polonia', 4),
('Portugal', 4),
('Reino Unido', 4),
('República Centroafricana', 1),
('República Checa', 4),
('República del Congo', 1),
('República Democrática del Congo', 1),
('República Dominicana', 2),
('Ruanda', 1),
('Rumanía', 4),
('Rusia', 3),
('Samoa', 5),
('San Cristóbal y Nieves', 2),
('San Marino', 4),
('San Vicente y las Granadinas', 2),
('Santa Lucía', 2),
('Santo Tomé y Príncipe', 1),
('Senegal', 1),
('Serbia', 4),
('Seychelles', 1),
('Sierra Leona', 1),
('Singapur', 3),
('Siria', 3),
('Somalia', 1),
('Sri Lanka', 3),
('Sudáfrica', 1),
('Sudán', 1),
('Sudán del Sur', 1),
('Suecia', 4),
('Suiza', 4),
('Surinam', 2),
('Tailandia', 3),
('Tanzania', 1),
('Tayikistán', 3),
('Timor Oriental', 3),
('Togo', 1),
('Tonga', 5),
('Trinidad y Tobago', 2),
('Túnez', 1),
('Turkmenistán', 3),
('Turquía', 3),
('Tuvalu', 5),
('Ucrania', 4),
('Uganda', 1),
('Uruguay', 2),
('Uzbekistán', 3),
('Vanuatu', 5),
('Vaticano', 4),
('Venezuela', 2),
('Vietnam', 3),
('Yemen', 3),
('Yibuti', 1),
('Zambia', 1),
('Zimbabue', 1)
ON CONFLICT DO NOTHING;