diff options
Diffstat (limited to 'v_windows/v/examples/database/psql')
-rw-r--r-- | v_windows/v/examples/database/psql/.gitignore | 1 | ||||
-rw-r--r-- | v_windows/v/examples/database/psql/customer.v | 63 | ||||
-rw-r--r-- | v_windows/v/examples/database/psql/mydb.sql | 122 |
3 files changed, 186 insertions, 0 deletions
diff --git a/v_windows/v/examples/database/psql/.gitignore b/v_windows/v/examples/database/psql/.gitignore new file mode 100644 index 0000000..23830aa --- /dev/null +++ b/v_windows/v/examples/database/psql/.gitignore @@ -0,0 +1 @@ +customer diff --git a/v_windows/v/examples/database/psql/customer.v b/v_windows/v/examples/database/psql/customer.v new file mode 100644 index 0000000..4538a94 --- /dev/null +++ b/v_windows/v/examples/database/psql/customer.v @@ -0,0 +1,63 @@ +module main + +import pg + +const dash = '----------------------------------------------------------------' + +struct Customer { + id int + name string + nr_orders int + country string +} + +fn main() { + /* + db := pg.connect(pg.Config{ + host: 'localhost' //'127.0.0.1' + user: 'postgres' + dbname: 'customerdb' + }) or { + println('failed to connect') + println(err) + return + } + + nr_customers := db.select count from Customer + println('Total customers: $nr_customers') + + // V syntax can be used to build queries + println(dash) + bg_country := 'Bulgaria' + bg_customers := db.select from Customer where country == bg_country && id != 2 + for customer in bg_customers { + println('$customer.country | $customer.id - $customer.name') + } + + println(dash) + ru_customers := db.select from Customer where country == 'Russia' + for customer in ru_customers { + println('$customer.country | $customer.id - $customer.name') + } + + // by adding `limit 1` we tell V that there will be only one object + println(dash) + existing := db.select from Customer where id == 1 limit 1 or { panic(err) } + println('Existing customer name: $existing.name') + println('Existing customer full information:') + println(existing) + + println(dash) + q := Customer{} + // It's easy to handle queries that don't return any data + if anon := db.select from Customer where id == 12345 && name == q.name && + nr_orders > q.nr_orders limit 1 { + println('Non existing customer name: $anon.name') + } + // Insert a new customer + nc := Customer{ + name: 'John Doe' + nr_orders: 10 + } + db.insert(nc)*/ +} diff --git a/v_windows/v/examples/database/psql/mydb.sql b/v_windows/v/examples/database/psql/mydb.sql new file mode 100644 index 0000000..a7cbb39 --- /dev/null +++ b/v_windows/v/examples/database/psql/mydb.sql @@ -0,0 +1,122 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.5.19 +-- Dumped by pg_dump version 9.5.19 + +SET statement_timeout = 0; +SET lock_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; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: customers; Type: TABLE; Schema: public; Owner: myuser +-- + +CREATE TABLE public.customers ( + id integer NOT NULL, + name text DEFAULT ''::text, + nr_orders integer DEFAULT 0, + country text DEFAULT 'England'::text, + created_at timestamp without time zone DEFAULT now() +); + + +ALTER TABLE public.customers OWNER TO myuser; + +-- +-- Name: customers_id_seq; Type: SEQUENCE; Schema: public; Owner: myuser +-- + +CREATE SEQUENCE public.customers_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +ALTER TABLE public.customers_id_seq OWNER TO myuser; + +-- +-- Name: customers_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: myuser +-- + +ALTER SEQUENCE public.customers_id_seq OWNED BY public.customers.id; + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: myuser +-- + +ALTER TABLE ONLY public.customers ALTER COLUMN id SET DEFAULT nextval('public.customers_id_seq'::regclass); + + +-- +-- Data for Name: customers; Type: TABLE DATA; Schema: public; Owner: myuser +-- + +COPY public.customers (id, name, nr_orders, country, created_at) FROM stdin; +2 Pippi Långstrump 3 Bulgaria 2019-08-19 09:41:30.78888 +1 Bilbo Begins 11 Bulgaria 2019-08-19 09:40:31.396807 +3 Viktualia Rullgardina 0 Bulgaria 2019-08-19 09:42:52.723223 +4 Krusmynta Efraimsdotter 5 Bulgaria 2019-08-19 09:43:04.083209 +5 Ana Karenina 0 Russia 2019-08-20 15:41:50.244971 +7 Jiji Lolobridgida 0 Italy 2019-08-20 15:42:26.020113 +6 Viktor Savashkin 8 Russia 2019-08-20 15:42:07.213557 +\. + + +-- +-- Name: customers_id_seq; Type: SEQUENCE SET; Schema: public; Owner: myuser +-- + +SELECT pg_catalog.setval('public.customers_id_seq', 1, true); + + +-- +-- Name: customers_pkey; Type: CONSTRAINT; Schema: public; Owner: myuser +-- + +ALTER TABLE ONLY public.customers + ADD CONSTRAINT customers_pkey PRIMARY KEY (id); + + +-- +-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM postgres; +GRANT ALL ON SCHEMA public TO postgres; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + |