mirror of
https://github.com/internetee/registry.git
synced 2025-07-24 11:38:30 +02:00
Merge pull request #1265 from internetee/add-db-constraints
Add db constraints
This commit is contained in:
commit
b5c10651a9
8 changed files with 100 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class ChangeInvoicesNumberToNotNull < ActiveRecord::Migration
|
||||
def change
|
||||
change_column_null :invoices, :number, false
|
||||
end
|
||||
end
|
|
@ -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
|
5
db/migrate/20190811202347_add_invoices_buyer_id_fk.rb
Normal file
5
db/migrate/20190811202347_add_invoices_buyer_id_fk.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class AddInvoicesBuyerIdFk < ActiveRecord::Migration
|
||||
def change
|
||||
add_foreign_key :invoices, :registrars, column: :buyer_id
|
||||
end
|
||||
end
|
|
@ -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
|
|
@ -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
|
|
@ -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');
|
||||
|
||||
|
|
13
test/fixtures/invoices.yml
vendored
13
test/fixtures/invoices.yml
vendored
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue