From ff263374ec1b9611294997f811c2dff91e12b817 Mon Sep 17 00:00:00 2001 From: Finn Date: Fri, 25 Aug 2017 15:25:52 +0100 Subject: [PATCH 1/3] Added endpoints for organisation sector --- lib/Pear/LocalLoop/Controller/Admin/Organisations.pm | 4 ++++ lib/Pear/LocalLoop/Controller/Admin/Users.pm | 2 ++ lib/Pear/LocalLoop/Controller/Api/Register.pm | 2 ++ lib/Pear/LocalLoop/Controller/Api/User.pm | 2 ++ lib/Pear/LocalLoop/Schema/Result/Organisation.pm | 4 ++++ templates/admin/organisations/add_org.html.ep | 1 + templates/admin/organisations/valid_read.html.ep | 1 + templates/admin/users/read.html.ep | 4 ++++ 8 files changed, 20 insertions(+) diff --git a/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm b/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm index 178d9f7..4492b36 100644 --- a/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm +++ b/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm @@ -28,6 +28,7 @@ sub add_org_submit { $validation->required('name'); $validation->optional('street_name'); $validation->required('town'); + $validation->optional('sector'); $validation->optional('postcode')->postcode; if ( $validation->has_error ) { @@ -43,6 +44,7 @@ sub add_org_submit { name => $validation->param('name'), street_name => $validation->param('street_name'), town => $validation->param('town'), + sector => $validation->param('sector'), postcode => $validation->param('postcode'), }); } finally { @@ -78,6 +80,7 @@ sub valid_edit { $validation->required('name'); $validation->required('street_name'); $validation->required('town'); + $validation->optional('sector'); $validation->required('postcode')->postcode; if ( $validation->has_error ) { @@ -94,6 +97,7 @@ sub valid_edit { name => $validation->param('name'), street_name => $validation->param('street_name'), town => $validation->param('town'), + sector => $validation->param('sector'), postcode => $validation->param('postcode'), }); } ); diff --git a/lib/Pear/LocalLoop/Controller/Admin/Users.pm b/lib/Pear/LocalLoop/Controller/Admin/Users.pm index 2fbc110..064ffba 100644 --- a/lib/Pear/LocalLoop/Controller/Admin/Users.pm +++ b/lib/Pear/LocalLoop/Controller/Admin/Users.pm @@ -68,6 +68,7 @@ sub edit { $validation->required('name'); $validation->required('street_name'); $validation->required('town'); + $validation->optional('sector'); } if ( $validation->has_error ) { @@ -107,6 +108,7 @@ sub edit { name => $validation->param('name'), street_name => $validation->param('street_name'), town => $validation->param('town'), + sector => $validation->param('sector'), postcode => $validation->param('postcode'), }); $user->update({ diff --git a/lib/Pear/LocalLoop/Controller/Api/Register.pm b/lib/Pear/LocalLoop/Controller/Api/Register.pm index da6805a..dfff302 100644 --- a/lib/Pear/LocalLoop/Controller/Api/Register.pm +++ b/lib/Pear/LocalLoop/Controller/Api/Register.pm @@ -75,6 +75,7 @@ sub post_register{ $validation->required('name'); $validation->required('street_name'); $validation->required('town'); + $validation->required('sector'); } return $c->api_validation_error if $validation->has_error; @@ -112,6 +113,7 @@ sub post_register{ name => $validation->param('name'), street_name => $validation->param('street_name'), town => $validation->param('town'), + sector => $validation->param('sector'), postcode => $validation->param('postcode'), }); $c->schema->resultset('User')->create({ diff --git a/lib/Pear/LocalLoop/Controller/Api/User.pm b/lib/Pear/LocalLoop/Controller/Api/User.pm index 12ef04b..fce779a 100644 --- a/lib/Pear/LocalLoop/Controller/Api/User.pm +++ b/lib/Pear/LocalLoop/Controller/Api/User.pm @@ -128,6 +128,7 @@ sub post_account_update { $validation->required('name'); $validation->required('street_name'); $validation->required('town'); + $validation->required('sector'); } return $c->api_validation_error if $validation->has_error; @@ -154,6 +155,7 @@ sub post_account_update { name => $validation->param('name'), street_name => $validation->param('street_name'), town => $validation->param('town'), + sector => $validation->param('sector'), postcode => $validation->param('postcode'), }); $user->update({ diff --git a/lib/Pear/LocalLoop/Schema/Result/Organisation.pm b/lib/Pear/LocalLoop/Schema/Result/Organisation.pm index e5a30a3..f9f6348 100644 --- a/lib/Pear/LocalLoop/Schema/Result/Organisation.pm +++ b/lib/Pear/LocalLoop/Schema/Result/Organisation.pm @@ -34,6 +34,10 @@ __PACKAGE__->add_columns( size => 16, is_nullable => 1, }, + sector => { + data_type => "varchar", + size => 1, + is_nullable => 1, ); __PACKAGE__->set_primary_key('id'); diff --git a/templates/admin/organisations/add_org.html.ep b/templates/admin/organisations/add_org.html.ep index 07cf699..3e45d51 100644 --- a/templates/admin/organisations/add_org.html.ep +++ b/templates/admin/organisations/add_org.html.ep @@ -21,6 +21,7 @@
  • +
  • diff --git a/templates/admin/organisations/valid_read.html.ep b/templates/admin/organisations/valid_read.html.ep index 9fd3e97..12d67a6 100644 --- a/templates/admin/organisations/valid_read.html.ep +++ b/templates/admin/organisations/valid_read.html.ep @@ -20,6 +20,7 @@
  • +
  • diff --git a/templates/admin/users/read.html.ep b/templates/admin/users/read.html.ep index 202efed..8e6cb47 100644 --- a/templates/admin/users/read.html.ep +++ b/templates/admin/users/read.html.ep @@ -72,6 +72,10 @@ +
    + + +
    % } else {

    User is not a customer or an organisation From ef2e0627e19ad6b48ee15f32d2313234e8c1abfb Mon Sep 17 00:00:00 2001 From: Finn Date: Fri, 25 Aug 2017 15:32:39 +0100 Subject: [PATCH 2/3] Fixes and schema update stuff --- lib/Pear/LocalLoop/Schema.pm | 2 +- .../LocalLoop/Schema/Result/Organisation.pm | 1 + .../deploy/5/001-auto-__VERSION.sql | 18 + share/ddl/PostgreSQL/deploy/5/001-auto.sql | 250 ++++ share/ddl/PostgreSQL/upgrade/4-5/001-auto.sql | 12 + .../SQLite/deploy/5/001-auto-__VERSION.sql | 18 + share/ddl/SQLite/deploy/5/001-auto.sql | 170 +++ share/ddl/SQLite/upgrade/4-5/001-auto.sql | 12 + .../_source/deploy/5/001-auto-__VERSION.yml | 91 ++ share/ddl/_source/deploy/5/001-auto.yml | 1257 +++++++++++++++++ t/admin/user.t | 7 + 11 files changed, 1837 insertions(+), 1 deletion(-) create mode 100644 share/ddl/PostgreSQL/deploy/5/001-auto-__VERSION.sql create mode 100644 share/ddl/PostgreSQL/deploy/5/001-auto.sql create mode 100644 share/ddl/PostgreSQL/upgrade/4-5/001-auto.sql create mode 100644 share/ddl/SQLite/deploy/5/001-auto-__VERSION.sql create mode 100644 share/ddl/SQLite/deploy/5/001-auto.sql create mode 100644 share/ddl/SQLite/upgrade/4-5/001-auto.sql create mode 100644 share/ddl/_source/deploy/5/001-auto-__VERSION.yml create mode 100644 share/ddl/_source/deploy/5/001-auto.yml diff --git a/lib/Pear/LocalLoop/Schema.pm b/lib/Pear/LocalLoop/Schema.pm index 6c3cecc..739cc56 100644 --- a/lib/Pear/LocalLoop/Schema.pm +++ b/lib/Pear/LocalLoop/Schema.pm @@ -6,7 +6,7 @@ use warnings; use base 'DBIx::Class::Schema'; -our $VERSION = 4; +our $VERSION = 5; __PACKAGE__->load_namespaces; diff --git a/lib/Pear/LocalLoop/Schema/Result/Organisation.pm b/lib/Pear/LocalLoop/Schema/Result/Organisation.pm index f9f6348..5967644 100644 --- a/lib/Pear/LocalLoop/Schema/Result/Organisation.pm +++ b/lib/Pear/LocalLoop/Schema/Result/Organisation.pm @@ -38,6 +38,7 @@ __PACKAGE__->add_columns( data_type => "varchar", size => 1, is_nullable => 1, + }, ); __PACKAGE__->set_primary_key('id'); diff --git a/share/ddl/PostgreSQL/deploy/5/001-auto-__VERSION.sql b/share/ddl/PostgreSQL/deploy/5/001-auto-__VERSION.sql new file mode 100644 index 0000000..24fbed9 --- /dev/null +++ b/share/ddl/PostgreSQL/deploy/5/001-auto-__VERSION.sql @@ -0,0 +1,18 @@ +-- +-- Created by SQL::Translator::Producer::PostgreSQL +-- Created on Fri Aug 25 15:32:15 2017 +-- +; +-- +-- Table: dbix_class_deploymenthandler_versions +-- +CREATE TABLE "dbix_class_deploymenthandler_versions" ( + "id" serial NOT NULL, + "version" character varying(50) NOT NULL, + "ddl" text, + "upgrade_sql" text, + PRIMARY KEY ("id"), + CONSTRAINT "dbix_class_deploymenthandler_versions_version" UNIQUE ("version") +); + +; diff --git a/share/ddl/PostgreSQL/deploy/5/001-auto.sql b/share/ddl/PostgreSQL/deploy/5/001-auto.sql new file mode 100644 index 0000000..be85282 --- /dev/null +++ b/share/ddl/PostgreSQL/deploy/5/001-auto.sql @@ -0,0 +1,250 @@ +-- +-- Created by SQL::Translator::Producer::PostgreSQL +-- Created on Fri Aug 25 15:32:15 2017 +-- +; +-- +-- Table: account_tokens +-- +CREATE TABLE "account_tokens" ( + "id" serial NOT NULL, + "name" text NOT NULL, + "used" integer DEFAULT 0 NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "account_tokens_name" UNIQUE ("name") +); + +; +-- +-- Table: customers +-- +CREATE TABLE "customers" ( + "id" serial NOT NULL, + "display_name" character varying(255) NOT NULL, + "full_name" character varying(255) NOT NULL, + "year_of_birth" integer NOT NULL, + "postcode" character varying(16) NOT NULL, + PRIMARY KEY ("id") +); + +; +-- +-- Table: leaderboards +-- +CREATE TABLE "leaderboards" ( + "id" serial NOT NULL, + "name" character varying(255) NOT NULL, + "type" character varying(255) NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "leaderboards_type" UNIQUE ("type") +); + +; +-- +-- Table: organisations +-- +CREATE TABLE "organisations" ( + "id" serial NOT NULL, + "name" character varying(255) NOT NULL, + "street_name" text, + "town" character varying(255) NOT NULL, + "postcode" character varying(16), + "sector" character varying(1), + PRIMARY KEY ("id") +); + +; +-- +-- Table: leaderboard_sets +-- +CREATE TABLE "leaderboard_sets" ( + "id" serial NOT NULL, + "leaderboard_id" integer NOT NULL, + "date" timestamp NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "leaderboard_sets_idx_leaderboard_id" on "leaderboard_sets" ("leaderboard_id"); + +; +-- +-- Table: users +-- +CREATE TABLE "users" ( + "id" serial NOT NULL, + "customer_id" integer, + "organisation_id" integer, + "email" text NOT NULL, + "join_date" timestamp NOT NULL, + "password" character varying(100) NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "users_customer_id" UNIQUE ("customer_id"), + CONSTRAINT "users_email" UNIQUE ("email"), + CONSTRAINT "users_organisation_id" UNIQUE ("organisation_id") +); +CREATE INDEX "users_idx_customer_id" on "users" ("customer_id"); +CREATE INDEX "users_idx_organisation_id" on "users" ("organisation_id"); + +; +-- +-- Table: administrators +-- +CREATE TABLE "administrators" ( + "user_id" integer NOT NULL, + PRIMARY KEY ("user_id") +); + +; +-- +-- Table: feedback +-- +CREATE TABLE "feedback" ( + "id" serial NOT NULL, + "user_id" integer NOT NULL, + "submitted_at" timestamp NOT NULL, + "feedbacktext" text NOT NULL, + "app_name" character varying(255) NOT NULL, + "package_name" character varying(255) NOT NULL, + "version_code" character varying(255) NOT NULL, + "version_number" character varying(255) NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "feedback_idx_user_id" on "feedback" ("user_id"); + +; +-- +-- Table: pending_organisations +-- +CREATE TABLE "pending_organisations" ( + "id" serial NOT NULL, + "name" character varying(255) NOT NULL, + "street_name" text, + "town" character varying(255) NOT NULL, + "postcode" character varying(16), + "submitted_by_id" integer NOT NULL, + "submitted_at" timestamp NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "pending_organisations_idx_submitted_by_id" on "pending_organisations" ("submitted_by_id"); + +; +-- +-- Table: session_tokens +-- +CREATE TABLE "session_tokens" ( + "id" serial NOT NULL, + "token" character varying(255) NOT NULL, + "user_id" integer NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "session_tokens_token" UNIQUE ("token") +); +CREATE INDEX "session_tokens_idx_user_id" on "session_tokens" ("user_id"); + +; +-- +-- Table: transactions +-- +CREATE TABLE "transactions" ( + "id" serial NOT NULL, + "buyer_id" integer NOT NULL, + "seller_id" integer NOT NULL, + "value" numeric(16,2) NOT NULL, + "proof_image" text NOT NULL, + "submitted_at" timestamp NOT NULL, + "purchase_time" timestamp NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "transactions_idx_buyer_id" on "transactions" ("buyer_id"); +CREATE INDEX "transactions_idx_seller_id" on "transactions" ("seller_id"); + +; +-- +-- Table: pending_transactions +-- +CREATE TABLE "pending_transactions" ( + "id" serial NOT NULL, + "buyer_id" integer NOT NULL, + "seller_id" integer NOT NULL, + "value" numeric(16,2) NOT NULL, + "proof_image" text NOT NULL, + "submitted_at" timestamp NOT NULL, + "purchase_time" timestamp NOT NULL, + PRIMARY KEY ("id") +); +CREATE INDEX "pending_transactions_idx_buyer_id" on "pending_transactions" ("buyer_id"); +CREATE INDEX "pending_transactions_idx_seller_id" on "pending_transactions" ("seller_id"); + +; +-- +-- Table: leaderboard_values +-- +CREATE TABLE "leaderboard_values" ( + "id" serial NOT NULL, + "user_id" integer NOT NULL, + "set_id" integer NOT NULL, + "position" integer NOT NULL, + "value" numeric(16,2) NOT NULL, + "trend" integer DEFAULT 0 NOT NULL, + PRIMARY KEY ("id"), + CONSTRAINT "leaderboard_values_user_id_set_id" UNIQUE ("user_id", "set_id") +); +CREATE INDEX "leaderboard_values_idx_set_id" on "leaderboard_values" ("set_id"); +CREATE INDEX "leaderboard_values_idx_user_id" on "leaderboard_values" ("user_id"); + +; +-- +-- Foreign Key Definitions +-- + +; +ALTER TABLE "leaderboard_sets" ADD CONSTRAINT "leaderboard_sets_fk_leaderboard_id" FOREIGN KEY ("leaderboard_id") + REFERENCES "leaderboards" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "users" ADD CONSTRAINT "users_fk_customer_id" FOREIGN KEY ("customer_id") + REFERENCES "customers" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "users" ADD CONSTRAINT "users_fk_organisation_id" FOREIGN KEY ("organisation_id") + REFERENCES "organisations" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "administrators" ADD CONSTRAINT "administrators_fk_user_id" FOREIGN KEY ("user_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "feedback" ADD CONSTRAINT "feedback_fk_user_id" FOREIGN KEY ("user_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "pending_organisations" ADD CONSTRAINT "pending_organisations_fk_submitted_by_id" FOREIGN KEY ("submitted_by_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "session_tokens" ADD CONSTRAINT "session_tokens_fk_user_id" FOREIGN KEY ("user_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "transactions" ADD CONSTRAINT "transactions_fk_buyer_id" FOREIGN KEY ("buyer_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "transactions" ADD CONSTRAINT "transactions_fk_seller_id" FOREIGN KEY ("seller_id") + REFERENCES "organisations" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "pending_transactions" ADD CONSTRAINT "pending_transactions_fk_buyer_id" FOREIGN KEY ("buyer_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "pending_transactions" ADD CONSTRAINT "pending_transactions_fk_seller_id" FOREIGN KEY ("seller_id") + REFERENCES "pending_organisations" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "leaderboard_values" ADD CONSTRAINT "leaderboard_values_fk_set_id" FOREIGN KEY ("set_id") + REFERENCES "leaderboard_sets" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; +ALTER TABLE "leaderboard_values" ADD CONSTRAINT "leaderboard_values_fk_user_id" FOREIGN KEY ("user_id") + REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION; + +; diff --git a/share/ddl/PostgreSQL/upgrade/4-5/001-auto.sql b/share/ddl/PostgreSQL/upgrade/4-5/001-auto.sql new file mode 100644 index 0000000..2d09d8a --- /dev/null +++ b/share/ddl/PostgreSQL/upgrade/4-5/001-auto.sql @@ -0,0 +1,12 @@ +-- Convert schema 'share/ddl/_source/deploy/4/001-auto.yml' to 'share/ddl/_source/deploy/5/001-auto.yml':; + +; +BEGIN; + +; +ALTER TABLE organisations ADD COLUMN sector character varying(1); + +; + +COMMIT; + diff --git a/share/ddl/SQLite/deploy/5/001-auto-__VERSION.sql b/share/ddl/SQLite/deploy/5/001-auto-__VERSION.sql new file mode 100644 index 0000000..959fcd8 --- /dev/null +++ b/share/ddl/SQLite/deploy/5/001-auto-__VERSION.sql @@ -0,0 +1,18 @@ +-- +-- Created by SQL::Translator::Producer::SQLite +-- Created on Fri Aug 25 15:32:15 2017 +-- + +; +BEGIN TRANSACTION; +-- +-- Table: dbix_class_deploymenthandler_versions +-- +CREATE TABLE dbix_class_deploymenthandler_versions ( + id INTEGER PRIMARY KEY NOT NULL, + version varchar(50) NOT NULL, + ddl text, + upgrade_sql text +); +CREATE UNIQUE INDEX dbix_class_deploymenthandler_versions_version ON dbix_class_deploymenthandler_versions (version); +COMMIT; diff --git a/share/ddl/SQLite/deploy/5/001-auto.sql b/share/ddl/SQLite/deploy/5/001-auto.sql new file mode 100644 index 0000000..2d7798b --- /dev/null +++ b/share/ddl/SQLite/deploy/5/001-auto.sql @@ -0,0 +1,170 @@ +-- +-- Created by SQL::Translator::Producer::SQLite +-- Created on Fri Aug 25 15:32:15 2017 +-- + +; +BEGIN TRANSACTION; +-- +-- Table: account_tokens +-- +CREATE TABLE account_tokens ( + id INTEGER PRIMARY KEY NOT NULL, + name text NOT NULL, + used integer NOT NULL DEFAULT 0 +); +CREATE UNIQUE INDEX account_tokens_name ON account_tokens (name); +-- +-- Table: customers +-- +CREATE TABLE customers ( + id INTEGER PRIMARY KEY NOT NULL, + display_name varchar(255) NOT NULL, + full_name varchar(255) NOT NULL, + year_of_birth integer NOT NULL, + postcode varchar(16) NOT NULL +); +-- +-- Table: leaderboards +-- +CREATE TABLE leaderboards ( + id INTEGER PRIMARY KEY NOT NULL, + name varchar(255) NOT NULL, + type varchar(255) NOT NULL +); +CREATE UNIQUE INDEX leaderboards_type ON leaderboards (type); +-- +-- Table: organisations +-- +CREATE TABLE organisations ( + id INTEGER PRIMARY KEY NOT NULL, + name varchar(255) NOT NULL, + street_name text, + town varchar(255) NOT NULL, + postcode varchar(16), + sector varchar(1) +); +-- +-- Table: leaderboard_sets +-- +CREATE TABLE leaderboard_sets ( + id INTEGER PRIMARY KEY NOT NULL, + leaderboard_id integer NOT NULL, + date datetime NOT NULL, + FOREIGN KEY (leaderboard_id) REFERENCES leaderboards(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX leaderboard_sets_idx_leaderboard_id ON leaderboard_sets (leaderboard_id); +-- +-- Table: users +-- +CREATE TABLE users ( + id INTEGER PRIMARY KEY NOT NULL, + customer_id integer, + organisation_id integer, + email text NOT NULL, + join_date datetime NOT NULL, + password varchar(100) NOT NULL, + FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE NO ACTION ON UPDATE NO ACTION, + FOREIGN KEY (organisation_id) REFERENCES organisations(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX users_idx_customer_id ON users (customer_id); +CREATE INDEX users_idx_organisation_id ON users (organisation_id); +CREATE UNIQUE INDEX users_customer_id ON users (customer_id); +CREATE UNIQUE INDEX users_email ON users (email); +CREATE UNIQUE INDEX users_organisation_id ON users (organisation_id); +-- +-- Table: administrators +-- +CREATE TABLE administrators ( + user_id INTEGER PRIMARY KEY NOT NULL, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +-- +-- Table: feedback +-- +CREATE TABLE feedback ( + id INTEGER PRIMARY KEY NOT NULL, + user_id integer NOT NULL, + submitted_at datetime NOT NULL, + feedbacktext text NOT NULL, + app_name varchar(255) NOT NULL, + package_name varchar(255) NOT NULL, + version_code varchar(255) NOT NULL, + version_number varchar(255) NOT NULL, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX feedback_idx_user_id ON feedback (user_id); +-- +-- Table: pending_organisations +-- +CREATE TABLE pending_organisations ( + id INTEGER PRIMARY KEY NOT NULL, + name varchar(255) NOT NULL, + street_name text, + town varchar(255) NOT NULL, + postcode varchar(16), + submitted_by_id integer NOT NULL, + submitted_at datetime NOT NULL, + FOREIGN KEY (submitted_by_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX pending_organisations_idx_submitted_by_id ON pending_organisations (submitted_by_id); +-- +-- Table: session_tokens +-- +CREATE TABLE session_tokens ( + id INTEGER PRIMARY KEY NOT NULL, + token varchar(255) NOT NULL, + user_id integer NOT NULL, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX session_tokens_idx_user_id ON session_tokens (user_id); +CREATE UNIQUE INDEX session_tokens_token ON session_tokens (token); +-- +-- Table: transactions +-- +CREATE TABLE transactions ( + id INTEGER PRIMARY KEY NOT NULL, + buyer_id integer NOT NULL, + seller_id integer NOT NULL, + value decimal(16,2) NOT NULL, + proof_image text NOT NULL, + submitted_at datetime NOT NULL, + purchase_time datetime NOT NULL, + FOREIGN KEY (buyer_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION, + FOREIGN KEY (seller_id) REFERENCES organisations(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX transactions_idx_buyer_id ON transactions (buyer_id); +CREATE INDEX transactions_idx_seller_id ON transactions (seller_id); +-- +-- Table: pending_transactions +-- +CREATE TABLE pending_transactions ( + id INTEGER PRIMARY KEY NOT NULL, + buyer_id integer NOT NULL, + seller_id integer NOT NULL, + value decimal(16,2) NOT NULL, + proof_image text NOT NULL, + submitted_at datetime NOT NULL, + purchase_time datetime NOT NULL, + FOREIGN KEY (buyer_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION, + FOREIGN KEY (seller_id) REFERENCES pending_organisations(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX pending_transactions_idx_buyer_id ON pending_transactions (buyer_id); +CREATE INDEX pending_transactions_idx_seller_id ON pending_transactions (seller_id); +-- +-- Table: leaderboard_values +-- +CREATE TABLE leaderboard_values ( + id INTEGER PRIMARY KEY NOT NULL, + user_id integer NOT NULL, + set_id integer NOT NULL, + position integer NOT NULL, + value decimal(16,2) NOT NULL, + trend integer NOT NULL DEFAULT 0, + FOREIGN KEY (set_id) REFERENCES leaderboard_sets(id) ON DELETE NO ACTION ON UPDATE NO ACTION, + FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE NO ACTION ON UPDATE NO ACTION +); +CREATE INDEX leaderboard_values_idx_set_id ON leaderboard_values (set_id); +CREATE INDEX leaderboard_values_idx_user_id ON leaderboard_values (user_id); +CREATE UNIQUE INDEX leaderboard_values_user_id_set_id ON leaderboard_values (user_id, set_id); +COMMIT; diff --git a/share/ddl/SQLite/upgrade/4-5/001-auto.sql b/share/ddl/SQLite/upgrade/4-5/001-auto.sql new file mode 100644 index 0000000..915202a --- /dev/null +++ b/share/ddl/SQLite/upgrade/4-5/001-auto.sql @@ -0,0 +1,12 @@ +-- Convert schema 'share/ddl/_source/deploy/4/001-auto.yml' to 'share/ddl/_source/deploy/5/001-auto.yml':; + +; +BEGIN; + +; +ALTER TABLE organisations ADD COLUMN sector varchar(1); + +; + +COMMIT; + diff --git a/share/ddl/_source/deploy/5/001-auto-__VERSION.yml b/share/ddl/_source/deploy/5/001-auto-__VERSION.yml new file mode 100644 index 0000000..907f443 --- /dev/null +++ b/share/ddl/_source/deploy/5/001-auto-__VERSION.yml @@ -0,0 +1,91 @@ +--- +schema: + procedures: {} + tables: + dbix_class_deploymenthandler_versions: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - version + match_type: '' + name: dbix_class_deploymenthandler_versions_version + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + ddl: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: ddl + order: 3 + size: + - 0 + id: + data_type: int + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + upgrade_sql: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: upgrade_sql + order: 4 + size: + - 0 + version: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: version + order: 2 + size: + - 50 + indices: [] + name: dbix_class_deploymenthandler_versions + options: [] + order: 1 + triggers: {} + views: {} +translator: + add_drop_table: 0 + filename: ~ + no_comments: 0 + parser_args: + sources: + - __VERSION + parser_type: SQL::Translator::Parser::DBIx::Class + producer_args: {} + producer_type: SQL::Translator::Producer::YAML + show_warnings: 0 + trace: 0 + version: 0.11021 diff --git a/share/ddl/_source/deploy/5/001-auto.yml b/share/ddl/_source/deploy/5/001-auto.yml new file mode 100644 index 0000000..0e54aa4 --- /dev/null +++ b/share/ddl/_source/deploy/5/001-auto.yml @@ -0,0 +1,1257 @@ +--- +schema: + procedures: {} + tables: + account_tokens: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - name + match_type: '' + name: account_tokens_name + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + name: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: name + order: 2 + size: + - 0 + used: + data_type: integer + default_value: 0 + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: used + order: 3 + size: + - 0 + indices: [] + name: account_tokens + options: [] + order: 1 + administrators: + constraints: + - deferrable: 1 + expression: '' + fields: + - user_id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - user_id + match_type: '' + name: administrators_fk_user_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + fields: + user_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: user_id + order: 1 + size: + - 0 + indices: [] + name: administrators + options: [] + order: 7 + customers: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + fields: + display_name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: display_name + order: 2 + size: + - 255 + full_name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: full_name + order: 3 + size: + - 255 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + postcode: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: postcode + order: 5 + size: + - 16 + year_of_birth: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: year_of_birth + order: 4 + size: + - 0 + indices: [] + name: customers + options: [] + order: 2 + feedback: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - user_id + match_type: '' + name: feedback_fk_user_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + fields: + app_name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: app_name + order: 5 + size: + - 255 + feedbacktext: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: feedbacktext + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + package_name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: package_name + order: 6 + size: + - 255 + submitted_at: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: submitted_at + order: 3 + size: + - 0 + user_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: user_id + order: 2 + size: + - 0 + version_code: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: version_code + order: 7 + size: + - 255 + version_number: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: version_number + order: 8 + size: + - 255 + indices: + - fields: + - user_id + name: feedback_idx_user_id + options: [] + type: NORMAL + name: feedback + options: [] + order: 8 + leaderboard_sets: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - leaderboard_id + match_type: '' + name: leaderboard_sets_fk_leaderboard_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: leaderboards + type: FOREIGN KEY + fields: + date: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: date + order: 3 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + leaderboard_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: leaderboard_id + order: 2 + size: + - 0 + indices: + - fields: + - leaderboard_id + name: leaderboard_sets_idx_leaderboard_id + options: [] + type: NORMAL + name: leaderboard_sets + options: [] + order: 5 + leaderboard_values: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - user_id + - set_id + match_type: '' + name: leaderboard_values_user_id_set_id + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - set_id + match_type: '' + name: leaderboard_values_fk_set_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: leaderboard_sets + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - user_id + match_type: '' + name: leaderboard_values_fk_user_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + position: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: position + order: 4 + size: + - 0 + set_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: set_id + order: 3 + size: + - 0 + trend: + data_type: integer + default_value: 0 + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: trend + order: 6 + size: + - 0 + user_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: user_id + order: 2 + size: + - 0 + value: + data_type: decimal + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: value + order: 5 + size: + - 16 + - 2 + indices: + - fields: + - set_id + name: leaderboard_values_idx_set_id + options: [] + type: NORMAL + - fields: + - user_id + name: leaderboard_values_idx_user_id + options: [] + type: NORMAL + name: leaderboard_values + options: [] + order: 13 + leaderboards: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - type + match_type: '' + name: leaderboards_type + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: name + order: 2 + size: + - 255 + type: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: type + order: 3 + size: + - 255 + indices: [] + name: leaderboards + options: [] + order: 3 + organisations: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: name + order: 2 + size: + - 255 + postcode: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: postcode + order: 5 + size: + - 16 + sector: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: sector + order: 6 + size: + - 1 + street_name: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: street_name + order: 3 + size: + - 0 + town: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: town + order: 4 + size: + - 255 + indices: [] + name: organisations + options: [] + order: 4 + pending_organisations: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - submitted_by_id + match_type: '' + name: pending_organisations_fk_submitted_by_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + name: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: name + order: 2 + size: + - 255 + postcode: + data_type: varchar + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: postcode + order: 5 + size: + - 16 + street_name: + data_type: text + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 0 + name: street_name + order: 3 + size: + - 0 + submitted_at: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: submitted_at + order: 7 + size: + - 0 + submitted_by_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: submitted_by_id + order: 6 + size: + - 0 + town: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: town + order: 4 + size: + - 255 + indices: + - fields: + - submitted_by_id + name: pending_organisations_idx_submitted_by_id + options: [] + type: NORMAL + name: pending_organisations + options: [] + order: 9 + pending_transactions: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - buyer_id + match_type: '' + name: pending_transactions_fk_buyer_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - seller_id + match_type: '' + name: pending_transactions_fk_seller_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: pending_organisations + type: FOREIGN KEY + fields: + buyer_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: buyer_id + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + proof_image: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: proof_image + order: 5 + size: + - 0 + purchase_time: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: purchase_time + order: 7 + size: + - 0 + seller_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: seller_id + order: 3 + size: + - 0 + submitted_at: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: submitted_at + order: 6 + size: + - 0 + value: + data_type: decimal + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: value + order: 4 + size: + - 16 + - 2 + indices: + - fields: + - buyer_id + name: pending_transactions_idx_buyer_id + options: [] + type: NORMAL + - fields: + - seller_id + name: pending_transactions_idx_seller_id + options: [] + type: NORMAL + name: pending_transactions + options: [] + order: 12 + session_tokens: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - token + match_type: '' + name: session_tokens_token + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - user_id + match_type: '' + name: session_tokens_fk_user_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + fields: + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + token: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: token + order: 2 + size: + - 255 + user_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: user_id + order: 3 + size: + - 0 + indices: + - fields: + - user_id + name: session_tokens_idx_user_id + options: [] + type: NORMAL + name: session_tokens + options: [] + order: 10 + transactions: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 0 + expression: '' + fields: + - buyer_id + match_type: '' + name: transactions_fk_buyer_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: users + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - seller_id + match_type: '' + name: transactions_fk_seller_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: organisations + type: FOREIGN KEY + fields: + buyer_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: buyer_id + order: 2 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + proof_image: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: proof_image + order: 5 + size: + - 0 + purchase_time: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: purchase_time + order: 7 + size: + - 0 + seller_id: + data_type: integer + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: seller_id + order: 3 + size: + - 0 + submitted_at: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: submitted_at + order: 6 + size: + - 0 + value: + data_type: decimal + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: value + order: 4 + size: + - 16 + - 2 + indices: + - fields: + - buyer_id + name: transactions_idx_buyer_id + options: [] + type: NORMAL + - fields: + - seller_id + name: transactions_idx_seller_id + options: [] + type: NORMAL + name: transactions + options: [] + order: 11 + users: + constraints: + - deferrable: 1 + expression: '' + fields: + - id + match_type: '' + name: '' + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: PRIMARY KEY + - deferrable: 1 + expression: '' + fields: + - customer_id + match_type: '' + name: users_customer_id + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 1 + expression: '' + fields: + - email + match_type: '' + name: users_email + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 1 + expression: '' + fields: + - organisation_id + match_type: '' + name: users_organisation_id + on_delete: '' + on_update: '' + options: [] + reference_fields: [] + reference_table: '' + type: UNIQUE + - deferrable: 0 + expression: '' + fields: + - customer_id + match_type: '' + name: users_fk_customer_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: customers + type: FOREIGN KEY + - deferrable: 0 + expression: '' + fields: + - organisation_id + match_type: '' + name: users_fk_organisation_id + on_delete: NO ACTION + on_update: NO ACTION + options: [] + reference_fields: + - id + reference_table: organisations + type: FOREIGN KEY + fields: + customer_id: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 1 + name: customer_id + order: 2 + size: + - 0 + email: + data_type: text + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 1 + name: email + order: 4 + size: + - 0 + id: + data_type: integer + default_value: ~ + is_auto_increment: 1 + is_nullable: 0 + is_primary_key: 1 + is_unique: 0 + name: id + order: 1 + size: + - 0 + join_date: + data_type: datetime + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: join_date + order: 5 + size: + - 0 + organisation_id: + data_type: integer + default_value: ~ + is_nullable: 1 + is_primary_key: 0 + is_unique: 1 + name: organisation_id + order: 3 + size: + - 0 + password: + data_type: varchar + default_value: ~ + is_nullable: 0 + is_primary_key: 0 + is_unique: 0 + name: password + order: 6 + size: + - 100 + indices: + - fields: + - customer_id + name: users_idx_customer_id + options: [] + type: NORMAL + - fields: + - organisation_id + name: users_idx_organisation_id + options: [] + type: NORMAL + name: users + options: [] + order: 6 + triggers: {} + views: {} +translator: + add_drop_table: 0 + filename: ~ + no_comments: 0 + parser_args: + sources: + - AccountToken + - Administrator + - Customer + - Feedback + - Leaderboard + - LeaderboardSet + - LeaderboardValue + - Organisation + - PendingOrganisation + - PendingTransaction + - SessionToken + - Transaction + - User + parser_type: SQL::Translator::Parser::DBIx::Class + producer_args: {} + producer_type: SQL::Translator::Producer::YAML + show_warnings: 0 + trace: 0 + version: 0.11021 diff --git a/t/admin/user.t b/t/admin/user.t index a531600..129dce6 100644 --- a/t/admin/user.t +++ b/t/admin/user.t @@ -32,6 +32,7 @@ my $org = { name => '7th Heaven', street_name => 'Slums, Sector 7', town => 'Midgar', + sector => 'A', postcode => 'WC1E 6AD', password => 'abc123', }; @@ -65,6 +66,7 @@ $t->post_ok('/admin/users/2/edit', form => { full_name => 'Test User1', display_name => 'Test User1', town => 'Midgar', + sector => 'A', postcode => 'WC1E 6AD', })->status_is(200)->content_like(qr/Updated User/); @@ -75,6 +77,7 @@ $t->post_ok('/admin/users/2/edit', form => { full_name => 'Test User1', display_name => 'Test User1', town => 'Midgar', + sector => 'A', })->content_like(qr/The validation has failed/); #Failed validation on customer user from no display name @@ -84,6 +87,7 @@ $t->post_ok('/admin/users/2/edit', form => { full_name => 'Test User1', town => 'Midgar', postcode => 'WC1E 6AD', + sector => 'A', })->content_like(qr/The validation has failed/); #Valid organisation user update @@ -93,6 +97,7 @@ $t->post_ok('/admin/users/3/edit', form => { name => '7th Heaven', street_name => 'Slums, Sector 7', town => 'Midgar', + sector => 'A', postcode => 'WC1E 6AD', })->status_is(200)->content_like(qr/Updated User/); @@ -103,6 +108,7 @@ $t->post_ok('/admin/users/3/edit', form => { name => '7th Heaven', street_name => 'Slums, Sector 7', town => 'Midgar', + sector => 'A', })->content_like(qr/The validation has failed/); #Failed validation on organisation user from no street name @@ -111,6 +117,7 @@ $t->post_ok('/admin/users/3/edit', form => { new_password => 'abc123', name => '7th Heaven', town => 'Midgar', + sector => 'A', postcode => 'WC1E 6AD', })->content_like(qr/The validation has failed/); From 6cdc8891c30c88471b9d3a7be7a4537a0c637146 Mon Sep 17 00:00:00 2001 From: Finn Date: Fri, 25 Aug 2017 15:47:54 +0100 Subject: [PATCH 3/3] Tests fixed --- t/admin/organisation.t | 4 ++++ t/api/register.t | 2 ++ t/api/search.t | 1 + t/api/stats.t | 1 + t/api/stats_leaderboards.t | 1 + t/api/upload.t | 1 + t/schema/leaderboard.t | 1 + t/schema/leaderboard_trend.t | 1 + t/schema/resultset_leaderboard.t | 1 + 9 files changed, 13 insertions(+) diff --git a/t/admin/organisation.t b/t/admin/organisation.t index 720415a..8ac7af6 100644 --- a/t/admin/organisation.t +++ b/t/admin/organisation.t @@ -21,6 +21,7 @@ $schema->resultset('Organisation')->create({ name => 'Shinra Electric Power Company', street_name => 'Sector 0, Midgar, Eastern Continent', town => 'Gaia', + sector => 'A', postcode => 'WC1E 6AD', }); @@ -53,6 +54,7 @@ $t->post_ok('/admin/organisations/valid/1/edit', form => { name => 'Shinra Electric Power Company', street_name => 'Sector 0, Midgar, Eastern Continent', town => 'Gaia', + sector => 'A', postcode => 'WC1E 6AD', })->status_is(200)->content_like(qr/Updated Organisation/); @@ -60,6 +62,7 @@ $t->post_ok('/admin/organisations/valid/1/edit', form => { $t->post_ok('/admin/organisations/valid/1/edit', form => { name => 'Shinra Electric Power Company', street_name => 'Sector 0, Midgar, Eastern Continent', + sector => 'A', postcode => 'WC1E 6AD', })->content_like(qr/The validation has failed/); @@ -83,6 +86,7 @@ $t->post_ok('/admin/organisations/add/submit', form => { name => 'Wall Market', street_name => 'Slums, Sector 6', town => 'Midgar', + sector => 'A', postcode => 'TN35 5AQ', })->status_is(200)->content_like(qr/Added Organisation/); diff --git a/t/api/register.t b/t/api/register.t index a1a20ec..203cde4 100644 --- a/t/api/register.t +++ b/t/api/register.t @@ -342,6 +342,7 @@ $testJson = { 'email' => 'org@org.com', 'postcode' => 'LA1 1AA', 'password' => 'Meh', + 'sector' => 'A', }; $t->post_ok('/api/register' => json => $testJson) ->status_is(400) @@ -360,6 +361,7 @@ $testJson = { 'password' => 'Meh', 'street_name' => 'mary lane testing....', 'town' => 'Lancaster', + 'sector' => 'A', }; $t->post_ok('/api/register' => json => $testJson) ->status_is(200) diff --git a/t/api/search.t b/t/api/search.t index ada3c0a..dbc688d 100644 --- a/t/api/search.t +++ b/t/api/search.t @@ -55,6 +55,7 @@ $testJson = { 'password' => $passwordBilly, 'street_name' => 'Market St', 'town' => 'Lancaster', + 'sector' => 'A', }; $t->post_ok('/api/register' => json => $testJson) ->status_is(200) diff --git a/t/api/stats.t b/t/api/stats.t index d12bcbe..2a6d889 100644 --- a/t/api/stats.t +++ b/t/api/stats.t @@ -28,6 +28,7 @@ my $org = { town => 'Lancaster', postcode => 'LA1 1AA', password => 'abc123', + sector => 'A', }; $schema->resultset('AccountToken')->create({ name => $user->{token} }); diff --git a/t/api/stats_leaderboards.t b/t/api/stats_leaderboards.t index 3b494ff..11003c2 100644 --- a/t/api/stats_leaderboards.t +++ b/t/api/stats_leaderboards.t @@ -56,6 +56,7 @@ my $org = { name => 'Test Org', street_name => 'Test Street', town => 'Lancaster', + sector => 'A', postcode => 'LA1 1AA', password => 'abc123', }; diff --git a/t/api/upload.t b/t/api/upload.t index 0cac28b..72020d3 100644 --- a/t/api/upload.t +++ b/t/api/upload.t @@ -81,6 +81,7 @@ $testJson = { 'password' => $passwordBilly, 'street_name' => 'Chocobo Farm, Eastern Continent', 'town' => 'Gaia', + 'sector' => 'A', }; $t->post_ok('/api/register' => json => $testJson) ->status_is(200) diff --git a/t/schema/leaderboard.t b/t/schema/leaderboard.t index 5d09595..5915760 100644 --- a/t/schema/leaderboard.t +++ b/t/schema/leaderboard.t @@ -58,6 +58,7 @@ my $org = { town => 'Lancaster', postcode => 'LA1 1AA', password => 'abc123', + sector => 'A', }; $schema->resultset('AccountToken')->create({ name => $_->{token} }) diff --git a/t/schema/leaderboard_trend.t b/t/schema/leaderboard_trend.t index 0674e68..33e7ea9 100644 --- a/t/schema/leaderboard_trend.t +++ b/t/schema/leaderboard_trend.t @@ -58,6 +58,7 @@ my $org = { town => 'Lancaster', postcode => 'LA1 1AA', password => 'abc123', + sector => 'A', }; $schema->resultset('AccountToken')->create({ name => $_->{token} }) diff --git a/t/schema/resultset_leaderboard.t b/t/schema/resultset_leaderboard.t index c1ab6b1..92b1120 100644 --- a/t/schema/resultset_leaderboard.t +++ b/t/schema/resultset_leaderboard.t @@ -58,6 +58,7 @@ my $org = { town => 'Lancaster', postcode => 'LA1 1AA', password => 'abc123', + sector => 'A', }; $schema->resultset('AccountToken')->create({ name => $_->{token} })