Add database constraints

This commit is contained in:
Artur Beljajev 2019-10-04 13:28:25 +03:00
parent 840f1db5c9
commit ba33f5740e
10 changed files with 345 additions and 225 deletions

View file

@ -0,0 +1,5 @@
class ChangeReservedDomainsNameToNotNull < ActiveRecord::Migration
def change
change_column_null :reserved_domains, :name, false
end
end

View file

@ -0,0 +1,13 @@
class AddReservedDomainsNameUniqConstraint < ActiveRecord::Migration
def up
execute <<-SQL
ALTER TABLE reserved_domains ADD CONSTRAINT uniq_reserved_domains_name UNIQUE (name);
SQL
end
def down
execute <<-SQL
ALTER TABLE reserved_domains DROP CONSTRAINT uniq_reserved_domains_name;
SQL
end
end

View file

@ -0,0 +1,5 @@
class ChangeBlockedDomainsNameToNotNull < ActiveRecord::Migration
def change
change_column_null :blocked_domains, :name, false
end
end

View file

@ -0,0 +1,13 @@
class AddBlockedDomainsNameUniqConstraint < ActiveRecord::Migration
def up
execute <<-SQL
ALTER TABLE blocked_domains ADD CONSTRAINT uniq_blocked_domains_name UNIQUE (name);
SQL
end
def down
execute <<-SQL
ALTER TABLE blocked_domains DROP CONSTRAINT uniq_blocked_domains_name;
SQL
end
end

View file

@ -0,0 +1,19 @@
class AddConstraints < ActiveRecord::Migration
def change
change_column_null :registrant_verifications, :domain_name, false
change_column_null :registrant_verifications, :verification_token, false
change_column_null :registrant_verifications, :action, false
change_column_null :registrant_verifications, :domain_id, false
change_column_null :registrant_verifications, :action_type, false
add_foreign_key :registrant_verifications, :domains
change_column_null :zones, :origin, false
change_column_null :zones, :ttl, false
change_column_null :zones, :refresh, false
change_column_null :zones, :retry, false
change_column_null :zones, :expire, false
change_column_null :zones, :minimum_ttl, false
change_column_null :zones, :email, false
change_column_null :zones, :master_nameserver, false
end
end

View file

@ -0,0 +1,6 @@
class AddConstraintsPartIi < ActiveRecord::Migration
def change
change_column_null :white_ips, :registrar_id, false
add_foreign_key :white_ips, :registrars
end
end

View file

@ -0,0 +1,7 @@
class AddConstraintsPartIii < ActiveRecord::Migration
def change
change_column_null :domains, :name, false
change_column_null :domains, :name_puny, false
change_column_null :domains, :name_dirty, false
end
end

View file

@ -525,7 +525,7 @@ CREATE TABLE public.blocked_domains (
updated_at timestamp without time zone, updated_at timestamp without time zone,
creator_str character varying, creator_str character varying,
updator_str character varying, updator_str character varying,
name character varying name character varying NOT NULL
); );
@ -801,7 +801,7 @@ ALTER SEQUENCE public.domain_transfers_id_seq OWNED BY public.domain_transfers.i
CREATE TABLE public.domains ( CREATE TABLE public.domains (
id integer NOT NULL, id integer NOT NULL,
name character varying, name character varying NOT NULL,
registrar_id integer NOT NULL, registrar_id integer NOT NULL,
registered_at timestamp without time zone, registered_at timestamp without time zone,
valid_to timestamp without time zone NOT NULL, valid_to timestamp without time zone NOT NULL,
@ -809,8 +809,8 @@ CREATE TABLE public.domains (
transfer_code character varying NOT NULL, transfer_code character varying NOT NULL,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
name_dirty character varying, name_dirty character varying NOT NULL,
name_puny character varying, name_puny character varying NOT NULL,
period integer, period integer,
period_unit character varying(1), period_unit character varying(1),
creator_str character varying, creator_str character varying,
@ -2030,13 +2030,13 @@ ALTER SEQUENCE public.que_jobs_job_id_seq OWNED BY public.que_jobs.job_id;
CREATE TABLE public.registrant_verifications ( CREATE TABLE public.registrant_verifications (
id integer NOT NULL, id integer NOT NULL,
domain_name character varying, domain_name character varying NOT NULL,
verification_token character varying, verification_token character varying NOT NULL,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
action character varying, action character varying NOT NULL,
domain_id integer, domain_id integer NOT NULL,
action_type character varying action_type character varying NOT NULL
); );
@ -2123,7 +2123,7 @@ CREATE TABLE public.reserved_domains (
creator_str character varying, creator_str character varying,
updator_str character varying, updator_str character varying,
legacy_id integer, legacy_id integer,
name character varying, name character varying NOT NULL,
password character varying NOT NULL password character varying NOT NULL
); );
@ -2285,7 +2285,7 @@ ALTER SEQUENCE public.versions_id_seq OWNED BY public.versions.id;
CREATE TABLE public.white_ips ( CREATE TABLE public.white_ips (
id integer NOT NULL, id integer NOT NULL,
registrar_id integer, registrar_id integer NOT NULL,
ipv4 character varying, ipv4 character varying,
ipv6 character varying, ipv6 character varying,
interfaces character varying[], interfaces character varying[],
@ -2356,14 +2356,14 @@ ALTER SEQUENCE public.whois_records_id_seq OWNED BY public.whois_records.id;
CREATE TABLE public.zones ( CREATE TABLE public.zones (
id integer NOT NULL, id integer NOT NULL,
origin character varying, origin character varying NOT NULL,
ttl integer, ttl integer NOT NULL,
refresh integer, refresh integer NOT NULL,
retry integer, retry integer NOT NULL,
expire integer, expire integer NOT NULL,
minimum_ttl integer, minimum_ttl integer NOT NULL,
email character varying, email character varying NOT NULL,
master_nameserver character varying, master_nameserver character varying NOT NULL,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
creator_str character varying, creator_str character varying,
@ -3148,6 +3148,14 @@ ALTER TABLE ONLY public.settings
ADD CONSTRAINT settings_pkey PRIMARY KEY (id); ADD CONSTRAINT settings_pkey PRIMARY KEY (id);
--
-- Name: uniq_blocked_domains_name; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
ALTER TABLE ONLY public.blocked_domains
ADD CONSTRAINT uniq_blocked_domains_name UNIQUE (name);
-- --
-- Name: uniq_contact_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- Name: uniq_contact_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
-- --
@ -3164,6 +3172,14 @@ ALTER TABLE ONLY public.domains
ADD CONSTRAINT uniq_domain_uuid UNIQUE (uuid); ADD CONSTRAINT uniq_domain_uuid UNIQUE (uuid);
--
-- Name: uniq_reserved_domains_name; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
--
ALTER TABLE ONLY public.reserved_domains
ADD CONSTRAINT uniq_reserved_domains_name UNIQUE (name);
-- --
-- Name: uniq_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- Name: uniq_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace:
-- --
@ -3919,6 +3935,14 @@ ALTER TABLE ONLY public.invoices
ADD CONSTRAINT fk_rails_242b91538b FOREIGN KEY (buyer_id) REFERENCES public.registrars(id); ADD CONSTRAINT fk_rails_242b91538b FOREIGN KEY (buyer_id) REFERENCES public.registrars(id);
--
-- Name: fk_rails_36cff3de9c; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.white_ips
ADD CONSTRAINT fk_rails_36cff3de9c FOREIGN KEY (registrar_id) REFERENCES public.registrars(id);
-- --
-- Name: fk_rails_59c422f73d; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: fk_rails_59c422f73d; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
@ -4023,6 +4047,14 @@ ALTER TABLE ONLY public.account_activities
ADD CONSTRAINT fk_rails_d2cc3c2fa9 FOREIGN KEY (price_id) REFERENCES public.prices(id); ADD CONSTRAINT fk_rails_d2cc3c2fa9 FOREIGN KEY (price_id) REFERENCES public.prices(id);
--
-- Name: fk_rails_f41617a0e9; Type: FK CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.registrant_verifications
ADD CONSTRAINT fk_rails_f41617a0e9 FOREIGN KEY (domain_id) REFERENCES public.domains(id);
-- --
-- Name: invoice_items_invoice_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: - -- Name: invoice_items_invoice_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
-- --
@ -4835,5 +4867,18 @@ INSERT INTO schema_migrations (version) VALUES ('20190811202711');
INSERT INTO schema_migrations (version) VALUES ('20190811205406'); INSERT INTO schema_migrations (version) VALUES ('20190811205406');
INSERT INTO schema_migrations (version) VALUES ('20191008024334'); INSERT INTO schema_migrations (version) VALUES ('20191004095229');
INSERT INTO schema_migrations (version) VALUES ('20191004103144');
INSERT INTO schema_migrations (version) VALUES ('20191004105643');
INSERT INTO schema_migrations (version) VALUES ('20191004105732');
INSERT INTO schema_migrations (version) VALUES ('20191004154844');
INSERT INTO schema_migrations (version) VALUES ('20191005162437');
INSERT INTO schema_migrations (version) VALUES ('20191007123000');
INSERT INTO schema_migrations (version) VALUES ('20191008024334');

View file

@ -1,5 +1,6 @@
shop: shop:
name: shop.test name: shop.test
name_puny: shop.test
name_dirty: shop.test name_dirty: shop.test
registrar: bestnames registrar: bestnames
registrant: john registrant: john
@ -15,6 +16,7 @@ shop:
airport: airport:
name: airport.test name: airport.test
name_puny: airport.test
name_dirty: airport.test name_dirty: airport.test
registrar: bestnames registrar: bestnames
registrant: john registrant: john
@ -26,6 +28,7 @@ airport:
library: library:
name: library.test name: library.test
name_puny: library.test
name_dirty: library.test name_dirty: library.test
registrar: bestnames registrar: bestnames
registrant: acme_ltd registrant: acme_ltd
@ -37,6 +40,7 @@ library:
metro: metro:
name: metro.test name: metro.test
name_puny: metro.test
name_dirty: metro.test name_dirty: metro.test
registrar: goodnames registrar: goodnames
registrant: jack registrant: jack
@ -48,6 +52,7 @@ metro:
hospital: hospital:
name: hospital.test name: hospital.test
name_puny: hospital.test
name_dirty: hospital.test name_dirty: hospital.test
registrar: goodnames registrar: goodnames
registrant: john registrant: john
@ -59,6 +64,8 @@ hospital:
invalid: invalid:
name: invalid.test name: invalid.test
name_puny: invalid.test
name_dirty: invalid.test
transfer_code: 1438d6 transfer_code: 1438d6
valid_to: <%= Time.zone.parse('2010-07-05').utc.to_s(:db) %> valid_to: <%= Time.zone.parse('2010-07-05').utc.to_s(:db) %>
registrar: bestnames registrar: bestnames

View file

@ -21,9 +21,9 @@ class DomainVersionsTest < ApplicationSystemTestCase
INSERT INTO contacts (id, code, email, auth_info, registrar_id) INSERT INTO contacts (id, code, email, auth_info, registrar_id)
VALUES (54, 'test_code', 'test@inbox.test', '8b4d462aa04194ca78840a', #{@registrar.id}); VALUES (54, 'test_code', 'test@inbox.test', '8b4d462aa04194ca78840a', #{@registrar.id});
INSERT INTO domains (id, registrar_id, valid_to, registrant_id, INSERT INTO domains (id, name, name_puny, name_dirty, registrar_id, valid_to, registrant_id,
transfer_code) transfer_code)
VALUES (54, #{@registrar.id}, '2018-06-23T12:14:02.732+03:00', 54, 'transfer_code'); VALUES (54, 'any.test', 'any.test', 'any.test', #{@registrar.id}, '2018-06-23T12:14:02.732+03:00', 54, 'transfer_code');
INSERT INTO log_domains (item_type, item_id, event, whodunnit, object, INSERT INTO log_domains (item_type, item_id, event, whodunnit, object,
object_changes, created_at, session, children) object_changes, created_at, session, children)