Merge pull request #1265 from internetee/add-db-constraints

Add db constraints
This commit is contained in:
Timo Võhmar 2019-08-27 13:10:41 +03:00 committed by GitHub
commit b5c10651a9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 100 additions and 16 deletions

View file

@ -35,7 +35,7 @@ class Invoice < ActiveRecord::Base
attribute :vat_rate, ::Type::VATRate.new
def set_invoice_number
last_no = Invoice.order(number: :desc).where('number IS NOT NULL').limit(1).pluck(:number).first
last_no = Invoice.order(number: :desc).limit(1).pluck(:number).first
if last_no && last_no >= Setting.invoice_number_min.to_i
self.number = last_no + 1

View file

@ -0,0 +1,5 @@
class ChangeInvoicesNumberToNotNull < ActiveRecord::Migration
def change
change_column_null :invoices, :number, false
end
end

View file

@ -0,0 +1,13 @@
class AddInvoicesNumberUniqConstraint < ActiveRecord::Migration
def up
execute <<-SQL
ALTER TABLE invoices ADD CONSTRAINT unique_number UNIQUE (number)
SQL
end
def down
execute <<-SQL
ALTER TABLE invoices DROP CONSTRAINT unique_number
SQL
end
end

View file

@ -0,0 +1,5 @@
class AddInvoicesBuyerIdFk < ActiveRecord::Migration
def change
add_foreign_key :invoices, :registrars, column: :buyer_id
end
end

View file

@ -0,0 +1,15 @@
class ChangeInvoicesRequiredColumnsToNotNull < ActiveRecord::Migration
def change
change_column_null :invoices, :buyer_id, false
change_column_null :invoices, :seller_reg_no, false
change_column_null :invoices, :seller_bank, false
change_column_null :invoices, :seller_swift, false
change_column_null :invoices, :seller_country_code, false
change_column_null :invoices, :seller_street, false
change_column_null :invoices, :seller_city, false
change_column_null :invoices, :buyer_reg_no, false
change_column_null :invoices, :buyer_country_code, false
change_column_null :invoices, :buyer_street, false
change_column_null :invoices, :buyer_city, false
end
end

View file

@ -0,0 +1,7 @@
class ChangeInvoicesRequiredColumnsToNotNullPart2 < ActiveRecord::Migration
def change
change_column_null :invoices, :seller_email, false
change_column_null :invoices, :seller_contact_name, false
change_column_null :invoices, :buyer_email, false
end
end

View file

@ -936,34 +936,34 @@ CREATE TABLE public.invoices (
reference_no character varying NOT NULL,
vat_rate numeric(4,3) NOT NULL,
seller_name character varying NOT NULL,
seller_reg_no character varying,
seller_reg_no character varying NOT NULL,
seller_iban character varying NOT NULL,
seller_bank character varying,
seller_swift character varying,
seller_bank character varying NOT NULL,
seller_swift character varying NOT NULL,
seller_vat_no character varying,
seller_country_code character varying,
seller_country_code character varying NOT NULL,
seller_state character varying,
seller_street character varying,
seller_city character varying,
seller_street character varying NOT NULL,
seller_city character varying NOT NULL,
seller_zip character varying,
seller_phone character varying,
seller_url character varying,
seller_email character varying,
seller_contact_name character varying,
buyer_id integer,
seller_email character varying NOT NULL,
seller_contact_name character varying NOT NULL,
buyer_id integer NOT NULL,
buyer_name character varying NOT NULL,
buyer_reg_no character varying,
buyer_country_code character varying,
buyer_reg_no character varying NOT NULL,
buyer_country_code character varying NOT NULL,
buyer_state character varying,
buyer_street character varying,
buyer_city character varying,
buyer_street character varying NOT NULL,
buyer_city character varying NOT NULL,
buyer_zip character varying,
buyer_phone character varying,
buyer_url character varying,
buyer_email character varying,
buyer_email character varying NOT NULL,
creator_str character varying,
updator_str character varying,
number integer,
number integer NOT NULL,
cancelled_at timestamp without time zone,
total numeric(10,2) NOT NULL,
in_directo boolean DEFAULT false,
@ -3198,6 +3198,14 @@ ALTER TABLE ONLY public.registrars
ADD CONSTRAINT unique_name UNIQUE (name);
--
-- Name: unique_number; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
ALTER TABLE ONLY public.invoices
ADD CONSTRAINT unique_number UNIQUE (number);
--
-- Name: unique_reference_no; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
@ -3905,6 +3913,14 @@ ALTER TABLE ONLY public.domains
ADD CONSTRAINT domains_registrar_id_fk FOREIGN KEY (registrar_id) REFERENCES public.registrars(id);
--
-- Name: fk_rails_242b91538b; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.invoices
ADD CONSTRAINT fk_rails_242b91538b FOREIGN KEY (buyer_id) REFERENCES public.registrars(id);
--
-- Name: fk_rails_59c422f73d; Type: FK CONSTRAINT; Schema: public; Owner: -
--
@ -4811,3 +4827,13 @@ INSERT INTO schema_migrations (version) VALUES ('20190620084334');
INSERT INTO schema_migrations (version) VALUES ('20190811184334');
INSERT INTO schema_migrations (version) VALUES ('20190811195814');
INSERT INTO schema_migrations (version) VALUES ('20190811202042');
INSERT INTO schema_migrations (version) VALUES ('20190811202347');
INSERT INTO schema_migrations (version) VALUES ('20190811202711');
INSERT INTO schema_migrations (version) VALUES ('20190811205406');

View file

@ -3,9 +3,22 @@ one:
due_date: <%= Date.parse '2010-07-06' %>
currency: EUR
seller_name: Seller Ltd
seller_reg_no: 1234
seller_iban: US75512108001245126199
seller_bank: Main Bank
seller_swift: swift
seller_email: info@seller.test
seller_country_code: US
seller_street: Main Street 1
seller_city: New York
seller_contact_name: John Doe
buyer: bestnames
buyer_name: Buyer Ltd
buyer_reg_no: 12345
buyer_email: info@buyer.test
buyer_country_code: GB
buyer_street: Main Street 2
buyer_city: London
vat_rate: 0.1
total: 16.50
reference_no: 13