-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #17 from ssotka/sqlite-support
Sqlite support
- Loading branch information
Showing
4 changed files
with
318 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
use Test; | ||
use lib 'lib'; | ||
|
||
use-ok 'API::Db'; | ||
use-ok 'API::Db::App'; | ||
use-ok 'API::Db::Conv'; | ||
use-ok 'API::Db::Dockerfile'; | ||
use-ok 'API::Db::Mods'; | ||
use-ok 'API::Db::Roles'; | ||
use-ok 'API::Db::Templates'; | ||
|
||
done-testing; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
use Test; | ||
use lib 'lib'; | ||
|
||
use DB::SQLite; | ||
use API::Db; | ||
|
||
# create a new sqlite database using api_test_sqlte.sql | ||
my $filename = 't/02-db.sqlite'; | ||
ok( my $db = DB::SQLite.new(:$filename), 'create a new sqlite database'); | ||
|
||
# create the schema | ||
my $schema = 't/api_test_sqlite.sql'.IO.slurp; | ||
ok( $db.execute($schema), 'create the schema'); | ||
|
||
# create a new API::Db object | ||
ok( my $api = API::Db.new(dbname => $filename, | ||
host => 'localhost', | ||
port => 5432, | ||
user => 'test', | ||
password => 'test', | ||
db-type => 'sqlite'), 'create a new API::Db object'); | ||
|
||
# get a connection to the database | ||
ok( my $dbh = $api.get-db-handle, 'get a connection to the database'); | ||
|
||
# list the tables in the database | ||
ok( my @tables = $api.get-tables('public'), 'list the tables in the database'); | ||
|
||
#remove the database file | ||
ok( unlink($filename), 'remove the database file'); | ||
|
||
done-testing; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
-- | ||
-- Name: address; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE public.address ( | ||
id uuid DEFAULT gen_random_uuid() NOT NULL, | ||
building text, | ||
street1 text, | ||
street2 text, | ||
city text, | ||
state_region text, | ||
country character varying(2), | ||
zip character varying(10) | ||
); | ||
|
||
-- | ||
-- Name: author; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE public.author ( | ||
id uuid DEFAULT gen_random_uuid() NOT NULL, | ||
fname text, | ||
mname text, | ||
lname text | ||
); | ||
|
||
-- | ||
-- Name: book; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE public.book ( | ||
id uuid DEFAULT gen_random_uuid() NOT NULL, | ||
isbn text, | ||
author uuid, | ||
title text, | ||
printing text, | ||
publish_date date, | ||
publisher uuid | ||
); | ||
|
||
-- | ||
-- Name: publisher; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE public.publisher ( | ||
id uuid DEFAULT gen_random_uuid() NOT NULL, | ||
publisher_name text, | ||
address uuid | ||
); | ||
|
||
-- | ||
-- Data for Name: address; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO public.address VALUES ('c5fcc275-5174-4243-a4b2-eea91c07627e', '', '1745 Braodway', '', 'New York', 'NY', 'US', '10019'); | ||
|
||
|
||
-- | ||
-- Data for Name: author; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO public.author VALUES ('9b090798-0d09-43d6-8898-9b5c8ad2995f', 'William', '', 'Gibson'); | ||
INSERT INTO public.author VALUES ('dc35bc81-3f00-48f5-8f42-8e185aa1e515', 'Robert', 'Anson', 'Heinlein'); | ||
INSERT INTO public.author VALUES ('f691d9ce-6d8d-462c-8e8f-1c8a5bcfc591', 'Tim', '', 'Powers'); | ||
INSERT INTO public.author VALUES ('6ab84f37-51fe-4c38-883c-681ace68d919', 'Ursula', 'K.', 'Le Guin'); | ||
|
||
|
||
-- | ||
-- Data for Name: book; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO public.book VALUES ('c3287a53-81d6-41f3-8f7f-ffd01443084c', 'Fake-ISBN-Num', '9b090798-0d09-43d6-8898-9b5c8ad2995f', 'Neuromancer', '1', '1984-06-01', NULL); | ||
INSERT INTO public.book VALUES ('343a921e-118b-4f09-ba08-a18318469048', 'Fake-ISBN-Num2', '9b090798-0d09-43d6-8898-9b5c8ad2995f', 'Idoru', '1', '1985-06-01', NULL); | ||
INSERT INTO public.book VALUES ('809aa73b-9f6e-49ad-ac58-a5f1da8ec246', 'Fake-ISBN-Num3', '9b090798-0d09-43d6-8898-9b5c8ad2995f', 'All Tomorrow''s Parties', '1', '1986-06-01', NULL); | ||
INSERT INTO public.book VALUES ('a14b4869-357a-4dae-98d4-595e39894440', 'Fake-ISBN-Num5', 'dc35bc81-3f00-48f5-8f42-8e185aa1e515', 'Stranger in a Strange Land', '1', '1964-07-01', NULL); | ||
INSERT INTO public.book VALUES ('14326d00-377c-457d-847c-d33a0c696104', 'Fake-ISBN-Num6', 'f691d9ce-6d8d-462c-8e8f-1c8a5bcfc591', 'Declare', '1', '1998-01-01', NULL); | ||
INSERT INTO public.book VALUES ('955e74fc-6843-42bc-8b8a-aac17dbced00', 'Fake-ISBN-Num4', '9b090798-0d09-43d6-8898-9b5c8ad2995f', 'All You Need Is 💙', '1', '2024-01-09', 'd85e2529-9467-4387-9335-0fd12632b147'); | ||
|
||
|
||
-- | ||
-- Data for Name: publisher; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO public.publisher VALUES ('d85e2529-9467-4387-9335-0fd12632b147', 'Penguin Random House LLC.', 'c5fcc275-5174-4243-a4b2-eea91c07627e'); | ||
|
||
|
||
-- | ||
-- Name: address address_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
ALTER TABLE ONLY public.address | ||
ADD CONSTRAINT address_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: author author_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
ALTER TABLE ONLY public.author | ||
ADD CONSTRAINT author_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: book book_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
ALTER TABLE ONLY public.book | ||
ADD CONSTRAINT book_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: publisher publisher_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
ALTER TABLE ONLY public.publisher | ||
ADD CONSTRAINT publisher_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: book book_author_fkey; Type: FK CONSTRAINT; Schema: public; | ||
-- | ||
|
||
ALTER TABLE ONLY public.book | ||
ADD CONSTRAINT book_author_fkey FOREIGN KEY (author) REFERENCES public.author(id); | ||
|
||
|
||
-- | ||
-- Name: publisher publisher_address_fkey; Type: FK CONSTRAINT; Schema: public; | ||
-- | ||
|
||
ALTER TABLE ONLY public.publisher | ||
ADD CONSTRAINT publisher_address_fkey FOREIGN KEY (address) REFERENCES public.address(id); | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
-- | ||
-- Name: address; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE address ( | ||
id integer primary key autoincrement NOT NULL, | ||
building text, | ||
street1 text, | ||
street2 text, | ||
city text, | ||
state_region text, | ||
country character varying(2), | ||
zip character varying(10) | ||
); | ||
|
||
-- | ||
-- Name: author; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE author ( | ||
id integer primary key autoincrement NOT NULL, | ||
fname text, | ||
mname text, | ||
lname text | ||
); | ||
|
||
-- | ||
-- Name: book; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE book ( | ||
id integer primary key autoincrement NOT NULL, | ||
isbn text, | ||
author integer, | ||
title text, | ||
printing text, | ||
publish_date date, | ||
publisher integer, | ||
CONSTRAINT book_author_fkey FOREIGN KEY (author) REFERENCES author(id), | ||
CONSTRAINT book_publisher_fkey FOREIGN KEY (publisher) REFERENCES publisher(id) | ||
); | ||
|
||
-- | ||
-- Name: publisher; Type: TABLE; Schema: public; | ||
-- | ||
|
||
CREATE TABLE publisher ( | ||
id integer primary key autoincrement NOT NULL, | ||
publisher_name text, | ||
address integer, | ||
CONSTRAINT publisher_address_fkey FOREIGN KEY (address) REFERENCES address(id) | ||
); | ||
|
||
-- | ||
-- Data for Name: address; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO address VALUES (1, '', '1745 Braodway', '', 'New York', 'NY', 'US', '10019'); | ||
|
||
|
||
-- | ||
-- Data for Name: author; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO author VALUES (2, 'William', '', 'Gibson'); | ||
INSERT INTO author VALUES (3, 'Robert', 'Anson', 'Heinlein'); | ||
INSERT INTO author VALUES (4, 'Tim', '', 'Powers'); | ||
INSERT INTO author VALUES (5, 'Ursula', 'K.', 'Le Guin'); | ||
|
||
|
||
-- | ||
-- Data for Name: publisher; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO publisher VALUES (6, 'Penguin Random House LLC.', 1); | ||
|
||
-- | ||
-- Data for Name: book; Type: TABLE DATA; Schema: public; | ||
-- | ||
|
||
INSERT INTO book VALUES (7, 'Fake-ISBN-Num', 2, 'Neuromancer', '1', '1984-06-01', NULL); | ||
INSERT INTO book VALUES (8, 'Fake-ISBN-Num2', 2, 'Idoru', '1', '1985-06-01', NULL); | ||
INSERT INTO book VALUES (9, 'Fake-ISBN-Num3', 2, 'All Tomorrow''s Parties', '1', '1986-06-01', NULL); | ||
INSERT INTO book VALUES (10, 'Fake-ISBN-Num5', 3, 'Stranger in a Strange Land', '1', '1964-07-01', NULL); | ||
INSERT INTO book VALUES (11, 'Fake-ISBN-Num6', 4, 'Declare', '1', '1998-01-01', NULL); | ||
INSERT INTO book VALUES (12, 'Fake-ISBN-Num4', 2, 'All You Need Is 💙', '1', '2024-01-09', 6); | ||
|
||
|
||
|
||
|
||
-- | ||
-- Name: address address_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
-- ALTER TABLE ONLY address | ||
-- ADD CONSTRAINT address_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: author author_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
-- ALTER TABLE ONLY author | ||
-- ADD CONSTRAINT author_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: book book_pkey; Type: CONSTRAINT; Schema: ; | ||
-- | ||
|
||
-- ALTER TABLE ONLY book | ||
-- ADD CONSTRAINT book_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: publisher publisher_pkey; Type: CONSTRAINT; Schema: public; | ||
-- | ||
|
||
-- ALTER TABLE ONLY publisher | ||
-- ADD CONSTRAINT publisher_pkey PRIMARY KEY (id); | ||
|
||
|
||
-- | ||
-- Name: book book_author_fkey; Type: FK CONSTRAINT; Schema: public; | ||
-- | ||
|
||
-- ALTER TABLE ONLY book | ||
-- ADD CONSTRAINT book_author_fkey FOREIGN KEY (author) REFERENCES author(id); | ||
|
||
|
||
-- | ||
-- Name: publisher publisher_address_fkey; Type: FK CONSTRAINT; Schema: public; | ||
-- | ||
|
||
-- ALTER TABLE ONLY publisher | ||
-- ADD CONSTRAINT publisher_address_fkey FOREIGN KEY (address) REFERENCES address(id); | ||
|
||
|
||
|