From 7f95f8b4d82f87d34a8f7493c7215ae2bc4506da Mon Sep 17 00:00:00 2001 From: cquest Date: Wed, 20 Apr 2016 07:48:58 +0200 Subject: [PATCH] lastupdate field on events --- backend.py | 19 ++++++++++++++++--- setup.sql | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/backend.py b/backend.py index bd04f0e..2c4b5cc 100644 --- a/backend.py +++ b/backend.py @@ -10,19 +10,32 @@ class StatsResource(object): def on_get(self, req, resp): db = psycopg2.connect("dbname=oedb") cur = db.cursor() - cur.execute("SELECT count(*) from events;") + cur.execute("SELECT count(*) as events_count, max(createdate) as last_created, max(lastupdate) as last_updated from events;") stat = cur.fetchone() - count_events = stat[0] cur.close() db.close() - resp.body = """{"events_count":%s}""" % (count_events) + resp.body = """{"events_count": %s, "last_created": "%s", "last_updated": "%s"}""" % (stat[0], stat[1],stat[2]) resp.set_header('X-Powered-By', 'OpenEventDatabase') resp.set_header('Access-Control-Allow-Origin', '*') resp.set_header('Access-Control-Allow-Headers', 'X-Requested-With') resp.status = falcon.HTTP_200 class EventResource(object): + def on_get(self, req, resp): + db = psycopg2.connect("dbname=oedb") + cur = db.cursor() + print(req.params['id']) + # get data to display activity graphs + cur.execute("""select * from events where events_id='%s';""", req.params['id']) + e = cur.fetchone(e['events_tags']) + resp.body = e + resp.status = falcon.HTTP_200 + resp.set_header('X-Powered-By', 'OpenEventDatabase') + resp.set_header('Access-Control-Allow-Origin', '*') + resp.set_header('Access-Control-Allow-Headers', 'X-Requested-With') + db.close() + def on_post(self, req, resp): # get request body payload (json) body = req.stream.read().decode('utf-8') diff --git a/setup.sql b/setup.sql index 792c147..824e7fc 100644 --- a/setup.sql +++ b/setup.sql @@ -73,6 +73,15 @@ CREATE DOMAIN wgs84_lon AS double precision CONSTRAINT wgs84_lon_check CHECK (((VALUE >= ('-180'::integer)::double precision) AND (VALUE <= (180)::double precision))); +-- +-- Name: events_lastupdate(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION events_lastupdate() RETURNS trigger + LANGUAGE plpgsql + AS $$ BEGIN NEW.lastupdate = now(); RETURN NEW; END; $$; + + SET default_tablespace = ''; SET default_with_oids = false; @@ -88,10 +97,19 @@ CREATE TABLE events ( events_type text, events_tags json, events_id uuid DEFAULT uuid_generate_v4(), - createdate timestamp without time zone DEFAULT now() + createdate timestamp without time zone DEFAULT now(), + events_geom geometry, + lastupdate timestamp without time zone ); +-- +-- Name: events_idx_geom; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX events_idx_geom ON events USING gist (events_geom); + + -- -- Name: events_idx_id; Type: INDEX; Schema: public; Owner: - -- @@ -99,6 +117,13 @@ CREATE TABLE events ( CREATE UNIQUE INDEX events_idx_id ON events USING btree (events_id); +-- +-- Name: events_idx_lastupdate; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX events_idx_lastupdate ON events USING btree (lastupdate); + + -- -- Name: events_idx_what; Type: INDEX; Schema: public; Owner: - -- @@ -120,6 +145,13 @@ CREATE INDEX events_idx_when ON events USING btree (events_when); CREATE INDEX events_idx_where ON events USING gist (events_where); +-- +-- Name: events_lastupdate_trigger; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER events_lastupdate_trigger BEFORE UPDATE ON events FOR EACH ROW EXECUTE PROCEDURE events_lastupdate(); + + -- -- Name: public; Type: ACL; Schema: -; Owner: - --