diff --git a/xcpq/.ignore b/xcpq/.ignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/xcpq/buildtime/xcpq_editor/internal/config/.ignore b/xcpq/buildtime/xcpq_editor/internal/config/.ignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/xcpq/buildtime/xcpq_editor/internal/models/.ignore b/xcpq/buildtime/xcpq_editor/internal/models/.ignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/xcpq/buildtime/xcpq_editor/internal/repositories/.ignore b/xcpq/buildtime/xcpq_editor/internal/repositories/.ignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/xcpq/buildtime/xcpq_editor/internal/repositories/import_repository.go b/xcpq/buildtime/xcpq_editor/internal/repositories/import_repository.go new file mode 100644 index 000000000..3ff766f4f --- /dev/null +++ b/xcpq/buildtime/xcpq_editor/internal/repositories/import_repository.go @@ -0,0 +1,52 @@ +package repositories + +import ( + "database/sql" + "xcpq_editor/internal/models" +) + +type Import_Repository struct { + db *sql.DB + vr *Value_Repository + pt *Property_Type_Repository + ptg *Property_Types_Group_Repository + pr *Property_Repository +} + +func NewImport_Repository(db *sql.DB, vr *Value_Repository, pt *Property_Type_Repository, ptg *Property_Types_Group_Repository, pr *Property_Repository) *Import_Repository { + return &Import_Repository{ + db: db, + vr: vr, + pt: pt, + ptg: ptg, + pr: pr, + } +} + +func (r *Import_Repository) ImportPropertyTypesData(newGroup *models.Property_Types_Group, parentGroup *models.Property_Types_Group) error { + // Implement the import logic here + if newGroup.Id == 0 { + /** + * If the root ID is 0, it means the root property types group is not yet persisted. + * Implement the logic to handle this case, e.g., insert the root group into the database. + */ + group, err := r.ptg.CreatePropertyTypesGroup(newGroup, parentGroup) + if err != nil { + return err + } + newGroup.Id = group.Id + for _, childPropertyType := range newGroup.Property_Types { + _, err := r.pt.CreatePropertyType(&childPropertyType, newGroup, &childPropertyType.Property) + if err != nil { + return err + } + } + for _, childGroup := range newGroup.Property_Types_Groups { + err := r.ImportPropertyTypesData(&childGroup, newGroup) + if err != nil { + return err + } + } + } + return nil +} diff --git a/xcpq/buildtime/xcpq_editor/internal/services/.ignore b/xcpq/buildtime/xcpq_editor/internal/services/.ignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/xcpq/buildtime/xcpq_editor/internal/services/import_service.go b/xcpq/buildtime/xcpq_editor/internal/services/import_service.go new file mode 100644 index 000000000..385044db5 --- /dev/null +++ b/xcpq/buildtime/xcpq_editor/internal/services/import_service.go @@ -0,0 +1,20 @@ +package services + +import ( + "xcpq_editor/internal/models" + "xcpq_editor/internal/repositories" +) + +type Import_Service struct { + importRepository *repositories.Import_Repository +} + +func NewImport_Service(importRepository *repositories.Import_Repository) *Import_Service { + return &Import_Service{ + importRepository: importRepository, + } +} + +func (s *Import_Service) ImportPropertyTypesData(newGroup *models.Property_Types_Group, parentGroup *models.Property_Types_Group) error { + return s.importRepository.ImportPropertyTypesData(newGroup, parentGroup) +} diff --git a/xcpq/database/dump-xcpq-202609130909.sql b/xcpq/database/dump-xcpq-202609130909.sql new file mode 100644 index 000000000..e9e780133 Binary files /dev/null and b/xcpq/database/dump-xcpq-202609130909.sql differ diff --git a/xcpq/database/dump-xcpq-202609130915.sql b/xcpq/database/dump-xcpq-202609130915.sql new file mode 100644 index 000000000..c63b16cc0 --- /dev/null +++ b/xcpq/database/dump-xcpq-202609130915.sql @@ -0,0 +1,329 @@ +-- +-- PostgreSQL database dump +-- + +\restrict GIC3drewyMgulrEtIK7aSkXSq2vxnkXYUQhmWYUZdn3fSeyrHHRbtaWNqN975Kg + +-- Dumped from database version 18.4 (Debian 18.4-1.pgdg13+1) +-- Dumped by pg_dump version 18.6 + +-- Started on 2026-09-13 09:15:21 CEST + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET transaction_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; + +-- +-- TOC entry 6 (class 2615 OID 20689) +-- Name: properties; Type: SCHEMA; Schema: -; Owner: tsindt +-- + +CREATE SCHEMA properties; + + +ALTER SCHEMA properties OWNER TO tsindt; + +-- +-- TOC entry 3481 (class 0 OID 0) +-- Dependencies: 6 +-- Name: SCHEMA properties; Type: COMMENT; Schema: -; Owner: tsindt +-- + +COMMENT ON SCHEMA properties IS 'Alle Tabellen, die mit Properties und Values zu tun haben.'; + + +-- +-- TOC entry 220 (class 1259 OID 20691) +-- Name: properties_id_seq; Type: SEQUENCE; Schema: properties; Owner: tsindt +-- + +CREATE SEQUENCE properties.properties_id_seq + START WITH 1000000 + INCREMENT BY 1 + MINVALUE 1000000 + MAXVALUE 4999999 + CACHE 1; + + +ALTER SEQUENCE properties.properties_id_seq OWNER TO tsindt; + +-- +-- TOC entry 3482 (class 0 OID 0) +-- Dependencies: 220 +-- Name: SEQUENCE properties_id_seq; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON SEQUENCE properties.properties_id_seq IS 'Zähler für property und value IDs '; + + +SET default_tablespace = ''; + +SET default_table_access_method = heap; + +-- +-- TOC entry 223 (class 1259 OID 20722) +-- Name: properties; Type: TABLE; Schema: properties; Owner: tsindt +-- + +CREATE TABLE properties.properties ( + id bigint DEFAULT nextval('properties.properties_id_seq'::regclass) NOT NULL, + name text, + description text, + parent_property_id bigint DEFAULT 0 NOT NULL, + property_type_id bigint NOT NULL, + products_groups_id bigint DEFAULT 0 NOT NULL, + products_id bigint DEFAULT 0 NOT NULL, + image_url text DEFAULT 'https://www.thomas-sindt.de/img/properties_group.svg'::text +); + + +ALTER TABLE properties.properties OWNER TO tsindt; + +-- +-- TOC entry 3483 (class 0 OID 0) +-- Dependencies: 223 +-- Name: TABLE properties; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON TABLE properties.properties IS 'Eigenschaften, die Listen von Werten enthalten und eine Information, von welchem property sich dieses Property ableitet. Ist parent_property_id = 0, dann ist dieses ein Root-Property zu dem referenzierten PropertyType.'; + + +-- +-- TOC entry 3484 (class 0 OID 0) +-- Dependencies: 223 +-- Name: COLUMN properties.name; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON COLUMN properties.properties.name IS 'Der Name sollte derselbe sein, wie der referenzierte Property Type.'; + + +-- +-- TOC entry 3485 (class 0 OID 0) +-- Dependencies: 223 +-- Name: COLUMN properties.products_groups_id; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON COLUMN properties.properties.products_groups_id IS 'Referenziert auf dieProduktgruppe, zu dem dieses Property gehört. Wenn es zu keiner Produktgruppe gehört ist diese referenz = 0'; + + +-- +-- TOC entry 3486 (class 0 OID 0) +-- Dependencies: 223 +-- Name: COLUMN properties.products_id; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON COLUMN properties.properties.products_id IS 'Referenziert auf das Produkt, zu dem dieses Property gehört. Wenn es zu keinem Produkt gehört ist diese referenz = 0'; + + +-- +-- TOC entry 222 (class 1259 OID 20707) +-- Name: property_types; Type: TABLE; Schema: properties; Owner: tsindt +-- + +CREATE TABLE properties.property_types ( + id bigint DEFAULT nextval('properties.properties_id_seq'::regclass) NOT NULL, + name text, + description text, + property_types_groups_id bigint NOT NULL, + image_url text DEFAULT 'https://www.thomas-sindt.de/img/category.svg'::text +); + + +ALTER TABLE properties.property_types OWNER TO tsindt; + +-- +-- TOC entry 3487 (class 0 OID 0) +-- Dependencies: 222 +-- Name: TABLE property_types; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON TABLE properties.property_types IS 'Definition von properties'; + + +-- +-- TOC entry 221 (class 1259 OID 20698) +-- Name: property_types_groups; Type: TABLE; Schema: properties; Owner: tsindt +-- + +CREATE TABLE properties.property_types_groups ( + id bigint DEFAULT nextval('properties.properties_id_seq'::regclass) CONSTRAINT property_types_group_id_not_null NOT NULL, + name text, + description text, + parent_property_type_group_id bigint, + image_url text DEFAULT 'https://thomas-sindt/img/category.svg'::text +); + + +ALTER TABLE properties.property_types_groups OWNER TO tsindt; + +-- +-- TOC entry 3488 (class 0 OID 0) +-- Dependencies: 221 +-- Name: TABLE property_types_groups; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON TABLE properties.property_types_groups IS 'Baumstruktur zur Organisation von Property types +Wenn parent_property_types_group = 0, dann ist diese Gruppe eine Rootgruppe.'; + + +-- +-- TOC entry 224 (class 1259 OID 20743) +-- Name: values; Type: TABLE; Schema: properties; Owner: tsindt +-- + +CREATE TABLE properties."values" ( + id bigint DEFAULT nextval('properties.properties_id_seq'::regclass) NOT NULL, + value text, + properties_id bigint NOT NULL, + image_url text DEFAULT 'https://www.thomas-sindt.de/img/property.svg'::text +); + + +ALTER TABLE properties."values" OWNER TO tsindt; + +-- +-- TOC entry 3474 (class 0 OID 20722) +-- Dependencies: 223 +-- Data for Name: properties; Type: TABLE DATA; Schema: properties; Owner: tsindt +-- + +COPY properties.properties (id, name, description, parent_property_id, property_type_id, products_groups_id, products_id, image_url) FROM stdin; +\. + + +-- +-- TOC entry 3473 (class 0 OID 20707) +-- Dependencies: 222 +-- Data for Name: property_types; Type: TABLE DATA; Schema: properties; Owner: tsindt +-- + +COPY properties.property_types (id, name, description, property_types_groups_id, image_url) FROM stdin; +\. + + +-- +-- TOC entry 3472 (class 0 OID 20698) +-- Dependencies: 221 +-- Data for Name: property_types_groups; Type: TABLE DATA; Schema: properties; Owner: tsindt +-- + +COPY properties.property_types_groups (id, name, description, parent_property_type_group_id, image_url) FROM stdin; +\. + + +-- +-- TOC entry 3475 (class 0 OID 20743) +-- Dependencies: 224 +-- Data for Name: values; Type: TABLE DATA; Schema: properties; Owner: tsindt +-- + +COPY properties."values" (id, value, properties_id, image_url) FROM stdin; +\. + + +-- +-- TOC entry 3489 (class 0 OID 0) +-- Dependencies: 220 +-- Name: properties_id_seq; Type: SEQUENCE SET; Schema: properties; Owner: tsindt +-- + +SELECT pg_catalog.setval('properties.properties_id_seq', 1000000, false); + + +-- +-- TOC entry 3318 (class 2606 OID 20733) +-- Name: properties properties_pkey; Type: CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties.properties + ADD CONSTRAINT properties_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3314 (class 2606 OID 20706) +-- Name: property_types_groups property_types_group_pkey; Type: CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties.property_types_groups + ADD CONSTRAINT property_types_group_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3316 (class 2606 OID 20716) +-- Name: property_types property_types_pkey; Type: CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties.property_types + ADD CONSTRAINT property_types_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3320 (class 2606 OID 20752) +-- Name: values values_pkey; Type: CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties."values" + ADD CONSTRAINT values_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 3322 (class 2606 OID 20734) +-- Name: properties parent_property_type_id_fk; Type: FK CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties.properties + ADD CONSTRAINT parent_property_type_id_fk FOREIGN KEY (property_type_id) REFERENCES properties.property_types(id); + + +-- +-- TOC entry 3490 (class 0 OID 0) +-- Dependencies: 3322 +-- Name: CONSTRAINT parent_property_type_id_fk ON properties; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON CONSTRAINT parent_property_type_id_fk ON properties.properties IS 'Verweißt auf den Property Type dieses Properties'; + + +-- +-- TOC entry 3323 (class 2606 OID 20753) +-- Name: values properties_id_fk; Type: FK CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties."values" + ADD CONSTRAINT properties_id_fk FOREIGN KEY (properties_id) REFERENCES properties.properties(id); + + +-- +-- TOC entry 3321 (class 2606 OID 20717) +-- Name: property_types property_types_groups_id_fk; Type: FK CONSTRAINT; Schema: properties; Owner: tsindt +-- + +ALTER TABLE ONLY properties.property_types + ADD CONSTRAINT property_types_groups_id_fk FOREIGN KEY (property_types_groups_id) REFERENCES properties.property_types_groups(id); + + +-- +-- TOC entry 3491 (class 0 OID 0) +-- Dependencies: 3321 +-- Name: CONSTRAINT property_types_groups_id_fk ON property_types; Type: COMMENT; Schema: properties; Owner: tsindt +-- + +COMMENT ON CONSTRAINT property_types_groups_id_fk ON properties.property_types IS 'Referenz auf die Property Type Gruppe, zu der dieser Property Type gehört.'; + + +-- Completed on 2026-09-13 09:15:22 CEST + +-- +-- PostgreSQL database dump complete +-- + +\unrestrict GIC3drewyMgulrEtIK7aSkXSq2vxnkXYUQhmWYUZdn3fSeyrHHRbtaWNqN975Kg +