From: Michael Tremer Date: Tue, 21 Jun 2022 13:03:21 +0000 (+0000) Subject: distributions: Refactor X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ed93a914a2f0d60d38353747d5678c3cec2f031;p=pbs.git distributions: Refactor Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/distribution.py b/src/buildservice/distribution.py index 7d847943..1085bac4 100644 --- a/src/buildservice/distribution.py +++ b/src/buildservice/distribution.py @@ -2,9 +2,7 @@ import logging -from . import arches from . import base -from . import builds from . import packages from . import sources @@ -53,9 +51,6 @@ class Distribution(base.DataObject): def __repr__(self): return "<%s %s>" % (self.__class__.__name__, self.name) - def __iter__(self): - return iter(self.repositories) - @property def info(self): return { @@ -94,30 +89,23 @@ class Distribution(base.DataObject): def sname(self): return self.data.sname - @property - def identifier(self): - return self.sname - @property def slogan(self): return self.data.slogan - def get_arches(self): - res = self.db.query("SELECT arch FROM distributions_arches \ - WHERE distro_id = %s ORDER BY arch", self.id) - - return sorted((row.arch for row in res), key=arches.priority) + @property + def description(self): + return self.data.description - def set_arches(self, arches): - self.db.execute("DELETE FROM distro_arches WHERE distro_id = %s", self.id) + # Arches - for arch in arches: - self.db.execute("INSERT INTO distro_arches(distro_id, arch) \ - VALUES(%s, %s)", self.id, arch) + def get_arches(self): + return self.data.arches - self.arches = sorted(arches) + def set_arches(self, arches): + self._set_attribute("arches", arches) - arches = lazy_property(get_arches, set_arches) + arches = property(get_arches, set_arches) @property def vendor(self): @@ -139,10 +127,6 @@ class Distribution(base.DataObject): tag = property(get_tag, set_tag) - @property - def description(self): - return self.data.description or "" - @lazy_property def repositories(self): _repositories = self.backend.repos._get_repositories("SELECT * FROM repositories \ diff --git a/src/database.sql b/src/database.sql index 232dc930..3a4704b4 100644 --- a/src/database.sql +++ b/src/database.sql @@ -435,25 +435,14 @@ CREATE TABLE public.distributions ( vendor text NOT NULL, contact text, tag text NOT NULL, - deleted boolean DEFAULT false NOT NULL + deleted boolean DEFAULT false NOT NULL, + arches text[] DEFAULT ARRAY[]::text[] NOT NULL, + created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ); ALTER TABLE public.distributions OWNER TO pakfire; --- --- Name: distributions_arches; Type: TABLE; Schema: public; Owner: pakfire --- - -CREATE TABLE public.distributions_arches ( - id integer NOT NULL, - distro_id integer NOT NULL, - arch text NOT NULL -); - - -ALTER TABLE public.distributions_arches OWNER TO pakfire; - -- -- Name: distributions_id_seq; Type: SEQUENCE; Schema: public; Owner: pakfire -- @@ -475,27 +464,6 @@ ALTER TABLE public.distributions_id_seq OWNER TO pakfire; ALTER SEQUENCE public.distributions_id_seq OWNED BY public.distributions.id; --- --- Name: distro_arches_id_seq; Type: SEQUENCE; Schema: public; Owner: pakfire --- - -CREATE SEQUENCE public.distro_arches_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - -ALTER TABLE public.distro_arches_id_seq OWNER TO pakfire; - --- --- Name: distro_arches_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: pakfire --- - -ALTER SEQUENCE public.distro_arches_id_seq OWNED BY public.distributions_arches.id; - - -- -- Name: filelists; Type: TABLE; Schema: public; Owner: pakfire -- @@ -1615,13 +1583,6 @@ ALTER TABLE ONLY public.builds_watchers ALTER COLUMN id SET DEFAULT nextval('pub ALTER TABLE ONLY public.distributions ALTER COLUMN id SET DEFAULT nextval('public.distributions_id_seq'::regclass); --- --- Name: distributions_arches id; Type: DEFAULT; Schema: public; Owner: pakfire --- - -ALTER TABLE ONLY public.distributions_arches ALTER COLUMN id SET DEFAULT nextval('public.distro_arches_id_seq'::regclass); - - -- -- Name: images_types id; Type: DEFAULT; Schema: public; Owner: pakfire -- @@ -1791,6 +1752,14 @@ ALTER TABLE ONLY public.arches ADD CONSTRAINT arches_name UNIQUE (name); +-- +-- Name: distributions distributions_pkey; Type: CONSTRAINT; Schema: public; Owner: pakfire +-- + +ALTER TABLE ONLY public.distributions + ADD CONSTRAINT distributions_pkey PRIMARY KEY (id); + + -- -- Name: arches idx_2197943_primary; Type: CONSTRAINT; Schema: public; Owner: pakfire -- @@ -1863,22 +1832,6 @@ ALTER TABLE ONLY public.builds_watchers ADD CONSTRAINT idx_2198033_primary PRIMARY KEY (id); --- --- Name: distributions idx_2198039_primary; Type: CONSTRAINT; Schema: public; Owner: pakfire --- - -ALTER TABLE ONLY public.distributions - ADD CONSTRAINT idx_2198039_primary PRIMARY KEY (id); - - --- --- Name: distributions_arches idx_2198048_primary; Type: CONSTRAINT; Schema: public; Owner: pakfire --- - -ALTER TABLE ONLY public.distributions_arches - ADD CONSTRAINT idx_2198048_primary PRIMARY KEY (id); - - -- -- Name: images_types idx_2198057_primary; Type: CONSTRAINT; Schema: public; Owner: pakfire -- @@ -2109,13 +2062,6 @@ CREATE UNIQUE INDEX builders_name ON public.builders USING btree (name) WHERE (d CREATE INDEX builds_watchers_build_id ON public.builds_watchers USING btree (build_id); --- --- Name: distributions_arches_distro_id; Type: INDEX; Schema: public; Owner: pakfire --- - -CREATE INDEX distributions_arches_distro_id ON public.distributions_arches USING btree (distro_id); - - -- -- Name: distributions_sname; Type: INDEX; Schema: public; Owner: pakfire -- @@ -2514,22 +2460,6 @@ ALTER TABLE ONLY public.builds_watchers ADD CONSTRAINT builds_watchers_user_id FOREIGN KEY (user_id) REFERENCES public.users(id); --- --- Name: distributions_arches distributions_arches_arch; Type: FK CONSTRAINT; Schema: public; Owner: pakfire --- - -ALTER TABLE ONLY public.distributions_arches - ADD CONSTRAINT distributions_arches_arch FOREIGN KEY (arch) REFERENCES public.arches(name); - - --- --- Name: distributions_arches distro_arches_distro_id; Type: FK CONSTRAINT; Schema: public; Owner: pakfire --- - -ALTER TABLE ONLY public.distributions_arches - ADD CONSTRAINT distro_arches_distro_id FOREIGN KEY (distro_id) REFERENCES public.distributions(id); - - -- -- Name: filelists filelists_pkg_id; Type: FK CONSTRAINT; Schema: public; Owner: pakfire --