diff --git a/backup.sql b/backup.sql new file mode 100644 index 0000000..504ccf1 --- /dev/null +++ b/backup.sql @@ -0,0 +1,396 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 15.12 (Debian 15.12-1.pgdg120+1) +-- Dumped by pg_dump version 15.12 (Debian 15.12-1.pgdg120+1) + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SELECT pg_catalog.set_config('search_path', '', false); +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- Name: news; Type: TABLE; Schema: public; Owner: tgadmin +-- + +CREATE TABLE public.news ( + id integer NOT NULL, + title character varying(255) NOT NULL, + description text NOT NULL, + image_url text, + team character varying(255), + created_at timestamp without time zone DEFAULT now() +); + + +ALTER TABLE public.news OWNER TO tgadmin; + +-- +-- Name: news_id_seq; Type: SEQUENCE; Schema: public; Owner: tgadmin +-- + +CREATE SEQUENCE public.news_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.news_id_seq OWNER TO tgadmin; + +-- +-- Name: news_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: tgadmin +-- + +ALTER SEQUENCE public.news_id_seq OWNED BY public.news.id; + + +-- +-- Name: player_teams; Type: TABLE; Schema: public; Owner: tgadmin +-- + +CREATE TABLE public.player_teams ( + player_id integer NOT NULL, + team_id integer NOT NULL +); + + +ALTER TABLE public.player_teams OWNER TO tgadmin; + +-- +-- Name: players; Type: TABLE; Schema: public; Owner: tgadmin +-- + +CREATE TABLE public.players ( + id integer NOT NULL, + name character varying(255) NOT NULL, + nickname character varying(255), + birthdate date, + "position" character varying(255) NOT NULL, + jersey_number integer, + favorite_food character varying(255), + image_url text, + status character varying(50) DEFAULT 'aktiv'::character varying +); + + +ALTER TABLE public.players OWNER TO tgadmin; + +-- +-- Name: players_id_seq; Type: SEQUENCE; Schema: public; Owner: tgadmin +-- + +CREATE SEQUENCE public.players_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.players_id_seq OWNER TO tgadmin; + +-- +-- Name: players_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: tgadmin +-- + +ALTER SEQUENCE public.players_id_seq OWNED BY public.players.id; + + +-- +-- Name: teams; Type: TABLE; Schema: public; Owner: tgadmin +-- + +CREATE TABLE public.teams ( + id integer NOT NULL, + name character varying(255) NOT NULL, + liga text, + sucht_spieler boolean DEFAULT false, + social_media text, + karussell_bilder text[], + trainer_name text, + trainingszeiten text, + trainingsort text, + kontakt_name text, + kontakt_email text, + teamfarben text, + beschreibung text, + tabellenlink text +); + + +ALTER TABLE public.teams OWNER TO tgadmin; + +-- +-- Name: teams_id_seq; Type: SEQUENCE; Schema: public; Owner: tgadmin +-- + +CREATE SEQUENCE public.teams_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.teams_id_seq OWNER TO tgadmin; + +-- +-- Name: teams_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: tgadmin +-- + +ALTER SEQUENCE public.teams_id_seq OWNED BY public.teams.id; + + +-- +-- Name: users; Type: TABLE; Schema: public; Owner: tgadmin +-- + +CREATE TABLE public.users ( + id integer NOT NULL, + username character varying(255) NOT NULL, + password character varying(255) NOT NULL, + role character varying(50), + email character varying(255), + created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP, + last_logged timestamp without time zone +); + + +ALTER TABLE public.users OWNER TO tgadmin; + +-- +-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: tgadmin +-- + +CREATE SEQUENCE public.users_id_seq + AS integer + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.users_id_seq OWNER TO tgadmin; + +-- +-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: tgadmin +-- + +ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id; + + +-- +-- Name: news id; Type: DEFAULT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.news ALTER COLUMN id SET DEFAULT nextval('public.news_id_seq'::regclass); + + +-- +-- Name: players id; Type: DEFAULT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.players ALTER COLUMN id SET DEFAULT nextval('public.players_id_seq'::regclass); + + +-- +-- Name: teams id; Type: DEFAULT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.teams ALTER COLUMN id SET DEFAULT nextval('public.teams_id_seq'::regclass); + + +-- +-- Name: users id; Type: DEFAULT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass); + + +-- +-- Data for Name: news; Type: TABLE DATA; Schema: public; Owner: tgadmin +-- + +COPY public.news (id, title, description, image_url, team, created_at) FROM stdin; +1 Neue News vorhanden
Diese hat sogar Rich Text Support enabled!
/uploads/news/1745912382857.jpg Herren 1 2025-04-29 07:39:47.266851 +\. + + +-- +-- Data for Name: player_teams; Type: TABLE DATA; Schema: public; Owner: tgadmin +-- + +COPY public.player_teams (player_id, team_id) FROM stdin; +1 1 +3 1 +4 1 +5 1 +6 1 +7 1 +8 1 +2 1 +9 4 +10 4 +11 4 +12 4 +13 4 +\. + + +-- +-- Data for Name: players; Type: TABLE DATA; Schema: public; Owner: tgadmin +-- + +COPY public.players (id, name, nickname, birthdate, "position", jersey_number, favorite_food, image_url, status) FROM stdin; +6 Lasse Höfer LassEs! \N Außen/Annahme 6 LasseRanja /uploads/players/1745913205538.jpg aktiv +1 Marc Wieland Marci \N Diagonal 20 Dönerfleisch /uploads/players/1745913211650.jpg aktiv +7 Peter Roller Brrm Brrm \N Zuspieler 4 Reis mit Hühnchen /uploads/players/1745913222839.jpg aktiv +5 Phillip Schaefer Hifi \N Libero 13 Dönerfleisch /uploads/players/1745913229017.jpg aktiv +3 Samuel Valentino Quintero Artigas (Be)samu \N Mitte 8 Pizza /uploads/players/1745913236094.jpg aktiv +4 Sten Grüner Stenislav \N Außen/Annahme 3 Borschtsch /uploads/players/1745913243174.jpg aktiv +8 Tony Fan Tony Mahoni \N Zuspieler 11 Asia-Wok /uploads/players/1745913254103.jpg aktiv +2 David Brockmüller Blocki \N Mitte/Diagonal 12 Keks /uploads/players/1745913167980.jpg aktiv +9 Ann-Kathrin Minden Annki \N Mitte 9 Cola /uploads/players/1745928485551.jpg aktiv +10 Luisa Trautmann Lulu/Lu \N Außen/Annahme 6 Kenneth /uploads/players/1745928513832.jpg aktiv +11 Paula Jüllich Pauli \N Mitte 10 Döner vom Özefe /uploads/players/1745928548483.jpg aktiv +12 Annika Braasch Anni \N Zuspiel 2 Sebastian /uploads/players/1745928569406.jpg aktiv +13 Sebastian Minden Basti \N Trainer \N Whisky /uploads/players/1745928620598.jpg aktiv +\. + + +-- +-- Data for Name: teams; Type: TABLE DATA; Schema: public; Owner: tgadmin +-- + +COPY public.teams (id, name, liga, sucht_spieler, social_media, karussell_bilder, trainer_name, trainingszeiten, trainingsort, kontakt_name, kontakt_email, teamfarben, beschreibung, tabellenlink) FROM stdin; +2 Herren 2 \N f \N \N \N \N \N \N \N \N \N \N +5 Damen 2 \N f \N \N \N \N \N \N \N \N \N \N +4 Damen 1 Landesliga t instagram.com/tgl_volleyball {} Sebastian Minden Montags & Freitags 20-22 Uhr Bergstraßenhalle Laudenbach Sebastian Minden sebastian@minden.de Grün Wir sind die Damen 1, eine super Truppe mit viel Zug zum Erfolg! https://www.volleyball-nordbaden.de/cms/home/halle/spielbetrieb/tabellen_vl_ll.xhtml?LeaguePresenter.view=resultTable&LeaguePresenter.matchSeriesId=70120527#samsCmsComponent_68828342 +1 Herren 1 Landesliga f www.google.de {} Kahtrin Trübenbach Montags & Freitags, 19:30-22 Uhr Montags: Bergstraßenhalle Laudenbach, Freitags: BIZ Hemsbach Kathrin Trübenbach trübi@bach.de Grün Wir sind die H1 und wir machen Hackfleisch aus dir! https://www.volleyball-nordbaden.de/cms/home/halle/spielbetrieb/tabellen_vl_ll.xhtml?LeaguePresenter.view=resultTable&LeaguePresenter.matchSeriesId=70120580#samsCmsComponent_68828342 +\. + + +-- +-- Data for Name: users; Type: TABLE DATA; Schema: public; Owner: tgadmin +-- + +COPY public.users (id, username, password, role, email, created_at, last_logged) FROM stdin; +2 kennyschrubber $2b$10$mHgcSphPt.WsNrEnYlM.i.wPVCeWnkd4bGCPpn2B50fdTOK9DvhxK user kennyschrubber@web.de 2025-04-23 13:19:15.946587 \N +4 hackerino $2b$10$DYv1lN3kivPCvdDnE4oSxOrXz0Bu.7K5EEz72RnjbgE9iemL3N/yS user hackerino@web.de 2025-04-23 13:29:57.510891 \N +1 marcwieland $2b$10$X0RgZYuVMBpIuGUM2PvGHew.siTgdaiJg0TbJ6sDZd0JPgXZII6IS admin wieland.marc@gmx.de 2025-04-23 12:00:02.440704 2025-04-29 13:39:40.285532 +\. + + +-- +-- Name: news_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tgadmin +-- + +SELECT pg_catalog.setval('public.news_id_seq', 1, true); + + +-- +-- Name: players_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tgadmin +-- + +SELECT pg_catalog.setval('public.players_id_seq', 13, true); + + +-- +-- Name: teams_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tgadmin +-- + +SELECT pg_catalog.setval('public.teams_id_seq', 8, true); + + +-- +-- Name: users_id_seq; Type: SEQUENCE SET; Schema: public; Owner: tgadmin +-- + +SELECT pg_catalog.setval('public.users_id_seq', 4, true); + + +-- +-- Name: news news_pkey; Type: CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.news + ADD CONSTRAINT news_pkey PRIMARY KEY (id); + + +-- +-- Name: player_teams player_teams_pkey; Type: CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.player_teams + ADD CONSTRAINT player_teams_pkey PRIMARY KEY (player_id, team_id); + + +-- +-- Name: players players_pkey; Type: CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.players + ADD CONSTRAINT players_pkey PRIMARY KEY (id); + + +-- +-- Name: teams teams_name_key; Type: CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.teams + ADD CONSTRAINT teams_name_key UNIQUE (name); + + +-- +-- Name: teams teams_pkey; Type: CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.teams + ADD CONSTRAINT teams_pkey PRIMARY KEY (id); + + +-- +-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT users_pkey PRIMARY KEY (id); + + +-- +-- Name: player_teams player_teams_player_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.player_teams + ADD CONSTRAINT player_teams_player_id_fkey FOREIGN KEY (player_id) REFERENCES public.players(id) ON DELETE CASCADE; + + +-- +-- Name: player_teams player_teams_team_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: tgadmin +-- + +ALTER TABLE ONLY public.player_teams + ADD CONSTRAINT player_teams_team_id_fkey FOREIGN KEY (team_id) REFERENCES public.teams(id) ON DELETE CASCADE; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/index.js b/index.js index afd1d4a..f802b75 100644 --- a/index.js +++ b/index.js @@ -307,6 +307,7 @@ app.post("/api/upload-news-image", uploadNewsImage.single("image"), (req, res) = //Teams abfragen + app.get("/api/teams", async (req, res) => { try { const result = await pool.query(` @@ -314,10 +315,12 @@ app.get("/api/teams", async (req, res) => { t.id, t.name, t.liga, + t.beschreibung, + t.trainingszeiten, t.sucht_spieler, t.social_media, t.trainer_name, - t.karussell_bilder, -- 👉 Hier angepasst! + t.karussell_bilder, COUNT(pt.player_id) AS player_count FROM teams t LEFT JOIN player_teams pt ON pt.team_id = t.id @@ -325,10 +328,12 @@ app.get("/api/teams", async (req, res) => { t.id, t.name, t.liga, + t.beschreibung, + t.trainingszeiten, t.sucht_spieler, t.social_media, t.trainer_name, - t.karussell_bilder -- 👉 Hier auch + t.karussell_bilder ORDER BY t.name ASC `); res.json(result.rows); @@ -339,7 +344,9 @@ app.get("/api/teams", async (req, res) => { }); -// Team aktualisieren + + +//Team aktualisieren app.put("/api/teams/:id", async (req, res) => { const { id } = req.params; const {