diff --git a/db/make_ddl b/db/make_ddl new file mode 100755 index 0000000..39dd6fd --- /dev/null +++ b/db/make_ddl @@ -0,0 +1,19 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use FindBin qw($Bin); +use lib "$Bin/../Shrtr/lib"; +use Getopt::Long; +use Shrtr::Schema; + +my $preversion; +GetOptions('p|preversion:s' => \$preversion) + or die; + +my $sch = Shrtr::Schema->connect('dbi:SQLite:db=shrtr.db'); + +my $sqldir = "$Bin/sql"; +my $version = $sch->schema_version; +$sch->create_ddl_dir('SQLite', $version, $sqldir, $preversion); diff --git a/db/sql/Shrtr-Schema-0.001-0.001-SQLite.sql b/db/sql/Shrtr-Schema-0.001-0.001-SQLite.sql new file mode 100644 index 0000000..81c153b --- /dev/null +++ b/db/sql/Shrtr-Schema-0.001-0.001-SQLite.sql @@ -0,0 +1,4 @@ +-- Convert schema '/home/dave/git/shrtr/db/sql/Shrtr-Schema-0.001-SQLite.sql' to '/home/dave/git/shrtr/db/sql/Shrtr-Schema-0.001-SQLite.sql':; + +-- No differences found; + diff --git a/db/sql/Shrtr-Schema-0.001-SQLite.sql b/db/sql/Shrtr-Schema-0.001-SQLite.sql new file mode 100644 index 0000000..06b887f --- /dev/null +++ b/db/sql/Shrtr-Schema-0.001-SQLite.sql @@ -0,0 +1,69 @@ +-- +-- Created by SQL::Translator::Producer::SQLite +-- Created on Sat Feb 9 20:39:27 2013 +-- + +BEGIN TRANSACTION; + +-- +-- Table: click +-- +DROP TABLE click; + +CREATE TABLE click ( + id INTEGER PRIMARY KEY NOT NULL, + url integer NOT NULL, + ts timestamp NOT NULL DEFAULT current_timestamp, + referrer varchar(200), + user_agent varchar(200), + ip_address varchar(15), + FOREIGN KEY (url) REFERENCES url(id) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE INDEX click_idx_url ON click (url); + +-- +-- Table: url +-- +DROP TABLE url; + +CREATE TABLE url ( + id INTEGER PRIMARY KEY NOT NULL, + code varchar(200), + url text, + ts timestamp NOT NULL DEFAULT current_timestamp +); + +CREATE UNIQUE INDEX code ON url (code); + +-- +-- Table: user +-- +DROP TABLE user; + +CREATE TABLE user ( + id INTEGER PRIMARY KEY NOT NULL, + username varchar(20) NOT NULL, + email varchar(100) NOT NULL, + password varchar(32) NOT NULL +); + +-- +-- Table: user_url +-- +DROP TABLE user_url; + +CREATE TABLE user_url ( + user integer, + url integer, + ts timestamp NOT NULL DEFAULT current_timestamp, + ip varchar(15), + FOREIGN KEY (url) REFERENCES url(id) ON DELETE CASCADE ON UPDATE CASCADE, + FOREIGN KEY (user) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE INDEX user_url_idx_url ON user_url (url); + +CREATE INDEX user_url_idx_user ON user_url (user); + +COMMIT; diff --git a/db/upgrade b/db/upgrade new file mode 100755 index 0000000..e44cec0 --- /dev/null +++ b/db/upgrade @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use 5.010; + +use FindBin '$Bin'; +use lib "$Bin/../Shrtr/lib"; +use Shrtr::Schema; + +my $sch = Shrtr::Schema->connect('dbi:SQLite:db=shrtr.db'); + +if ($sch->get_db_version) { + $sch->upgrade; +} else { + $sch->deploy; +} + diff --git a/shrtr.db b/shrtr.db new file mode 100644 index 0000000..63c6f98 Binary files /dev/null and b/shrtr.db differ