From d10607b033e27930ccb57b6c7ff8472ca782179b Mon Sep 17 00:00:00 2001 From: Earlopain Date: Sun, 14 Aug 2022 21:38:09 +0200 Subject: [PATCH] [DB] Make some fields not null This was already the case in the production database. Also contains a few other small changes to bring the two more in line. --- ...20810131625_remove_dev_prod_differences.rb | 44 ++++++++++ db/structure.sql | 82 ++++++++----------- 2 files changed, 79 insertions(+), 47 deletions(-) create mode 100644 db/migrate/20220810131625_remove_dev_prod_differences.rb diff --git a/db/migrate/20220810131625_remove_dev_prod_differences.rb b/db/migrate/20220810131625_remove_dev_prod_differences.rb new file mode 100644 index 000000000..282a8cd53 --- /dev/null +++ b/db/migrate/20220810131625_remove_dev_prod_differences.rb @@ -0,0 +1,44 @@ +class RemoveDevProdDifferences < ActiveRecord::Migration[6.1] + def change + execute "DROP FUNCTION IF EXISTS sourcepattern"; + + non_null_timestamps(:artist_urls) + non_null_timestamps(:artists) + non_null_timestamps(:bans) + non_null_timestamps(:comments) + non_null_timestamps(:forum_posts) + non_null_timestamps(:note_versions) + non_null_timestamps(:notes) + non_null_timestamps(:pools) + non_null_timestamps(:wiki_page_versions) + non_null_timestamps(:wiki_pages) + + change_column_null :bans, :user_id, false + + change_column_null :forum_topics, :creator_ip_addr, false + + change_column_default :note_versions, :version, nil + + change_column_null :pools, :name, false + + change_column_null :post_versions, :updater_ip_addr, false + + change_column_null :posts, :has_active_children, false + change_column_null :posts, :created_at, false + change_column_default :posts, :source, nil + + change_column :tags, :category, :smallint + + change_column_null :post_sets, :description, false + + change_column_default :users, :per_page, 75 + change_column_default :users, :comment_threshold, -2 + + change_column_null :post_flags, :created_at, false + end + + def non_null_timestamps(table) + change_column_null table, :created_at, false + change_column_null table, :updated_at, false + end +end diff --git a/db/structure.sql b/db/structure.sql index 22f3ac5e3..4b9324599 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -54,19 +54,6 @@ END; $$; --- --- Name: sourcepattern(text); Type: FUNCTION; Schema: public; Owner: - --- - -CREATE FUNCTION public.sourcepattern(src text) RETURNS text - LANGUAGE plpgsql IMMUTABLE STRICT - AS $_$ - BEGIN - RETURN regexp_replace(src, '^[^/]*(//)?[^/]*.pixiv.net/img.*(/[^/]*/[^/]*)$', E'pixiv\\2'); - END; - $_$; - - -- -- Name: testprs_end(internal); Type: FUNCTION; Schema: public; Owner: - -- @@ -184,8 +171,8 @@ CREATE TABLE public.artist_urls ( artist_id integer NOT NULL, url text NOT NULL, normalized_url text NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, is_active boolean DEFAULT true NOT NULL ); @@ -260,8 +247,8 @@ CREATE TABLE public.artists ( creator_id integer NOT NULL, is_active boolean DEFAULT true NOT NULL, group_name character varying DEFAULT ''::character varying NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, other_names text[] DEFAULT '{}'::text[] NOT NULL, linked_user_id integer, is_locked boolean DEFAULT false @@ -294,12 +281,12 @@ ALTER SEQUENCE public.artists_id_seq OWNED BY public.artists.id; CREATE TABLE public.bans ( id integer NOT NULL, - user_id integer, + user_id integer NOT NULL, reason text NOT NULL, banner_id integer NOT NULL, expires_at timestamp without time zone, - created_at timestamp without time zone, - updated_at timestamp without time zone + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL ); @@ -447,8 +434,8 @@ CREATE TABLE public.comments ( creator_ip_addr inet NOT NULL, body_index tsvector NOT NULL, score integer DEFAULT 0 NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, updater_id integer, updater_ip_addr inet, do_not_bump_post boolean DEFAULT false NOT NULL, @@ -808,8 +795,8 @@ CREATE TABLE public.forum_posts ( body text NOT NULL, text_index tsvector NOT NULL, is_hidden boolean DEFAULT false NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, creator_ip_addr inet, warning_type integer, warning_user_id integer @@ -920,7 +907,7 @@ CREATE TABLE public.forum_topics ( created_at timestamp without time zone, updated_at timestamp without time zone, category_id integer DEFAULT 0 NOT NULL, - creator_ip_addr inet + creator_ip_addr inet NOT NULL ); @@ -1123,9 +1110,9 @@ CREATE TABLE public.note_versions ( height integer NOT NULL, is_active boolean DEFAULT true NOT NULL, body text NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, - version integer DEFAULT 0 NOT NULL + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + version integer NOT NULL ); @@ -1164,8 +1151,8 @@ CREATE TABLE public.notes ( is_active boolean DEFAULT true NOT NULL, body text NOT NULL, body_index tsvector NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, version integer DEFAULT 0 NOT NULL ); @@ -1239,13 +1226,13 @@ ALTER SEQUENCE public.pool_versions_id_seq OWNED BY public.pool_versions.id; CREATE TABLE public.pools ( id integer NOT NULL, - name character varying, + name character varying NOT NULL, creator_id integer NOT NULL, description text, is_active boolean DEFAULT true NOT NULL, post_ids integer[] DEFAULT '{}'::integer[] NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, category character varying DEFAULT 'series'::character varying NOT NULL ); @@ -1381,7 +1368,7 @@ CREATE TABLE public.post_flags ( creator_ip_addr inet NOT NULL, reason text, is_resolved boolean DEFAULT false NOT NULL, - created_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone, is_deletion boolean DEFAULT false NOT NULL ); @@ -1529,7 +1516,7 @@ CREATE TABLE public.post_sets ( id bigint NOT NULL, name character varying NOT NULL, shortname character varying NOT NULL, - description text DEFAULT ''::text, + description text DEFAULT ''::text NOT NULL, is_public boolean DEFAULT false NOT NULL, transfer_on_delete boolean DEFAULT false NOT NULL, creator_id integer NOT NULL, @@ -1574,7 +1561,7 @@ CREATE TABLE public.post_versions ( added_locked_tags text[] DEFAULT '{}'::text[] NOT NULL, removed_locked_tags text[] DEFAULT '{}'::text[] NOT NULL, updater_id integer, - updater_ip_addr inet, + updater_ip_addr inet NOT NULL, updated_at timestamp without time zone NOT NULL, rating character varying(1), rating_changed boolean DEFAULT false NOT NULL, @@ -1649,12 +1636,12 @@ ALTER SEQUENCE public.post_votes_id_seq OWNED BY public.post_votes.id; CREATE TABLE public.posts ( id integer NOT NULL, - created_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone, up_score integer DEFAULT 0 NOT NULL, down_score integer DEFAULT 0 NOT NULL, score integer DEFAULT 0 NOT NULL, - source character varying DEFAULT ''::character varying NOT NULL, + source character varying NOT NULL, md5 character varying NOT NULL, rating character(1) DEFAULT 'q'::bpchar NOT NULL, is_note_locked boolean DEFAULT false NOT NULL, @@ -1685,7 +1672,7 @@ CREATE TABLE public.posts ( parent_id integer, has_children boolean DEFAULT false NOT NULL, last_commented_at timestamp without time zone, - has_active_children boolean DEFAULT false, + has_active_children boolean DEFAULT false NOT NULL, bit_flags bigint DEFAULT 0 NOT NULL, tag_count_meta integer DEFAULT 0 NOT NULL, locked_tags text, @@ -1976,7 +1963,7 @@ CREATE TABLE public.tags ( id integer NOT NULL, name character varying NOT NULL, post_count integer DEFAULT 0 NOT NULL, - category integer DEFAULT 0 NOT NULL, + category smallint DEFAULT 0 NOT NULL, related_tags text, related_tags_updated_at timestamp without time zone, created_at timestamp without time zone NOT NULL, @@ -2342,7 +2329,7 @@ CREATE TABLE public.users ( last_logged_in_at timestamp without time zone, last_forum_read_at timestamp without time zone, recent_tags text, - comment_threshold integer DEFAULT '-1'::integer NOT NULL, + comment_threshold integer DEFAULT '-2'::integer NOT NULL, default_image_size character varying DEFAULT 'large'::character varying NOT NULL, favorite_tags text, blacklisted_tags text DEFAULT 'spoilers @@ -2351,7 +2338,7 @@ scat furry -rating:s'::text, time_zone character varying DEFAULT 'Eastern Time (US & Canada)'::character varying NOT NULL, bcrypt_password_hash text, - per_page integer DEFAULT 20 NOT NULL, + per_page integer DEFAULT 75 NOT NULL, custom_style text, bit_prefs bigint DEFAULT 0 NOT NULL, last_ip_addr inet, @@ -2394,8 +2381,8 @@ CREATE TABLE public.wiki_page_versions ( title character varying NOT NULL, body text NOT NULL, is_locked boolean NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, other_names text[] DEFAULT '{}'::text[] NOT NULL, is_deleted boolean DEFAULT false NOT NULL, reason character varying @@ -2433,8 +2420,8 @@ CREATE TABLE public.wiki_pages ( body text NOT NULL, body_index tsvector NOT NULL, is_locked boolean DEFAULT false NOT NULL, - created_at timestamp without time zone, - updated_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, updater_id integer, other_names text[] DEFAULT '{}'::text[] NOT NULL, is_deleted boolean DEFAULT false NOT NULL @@ -4746,6 +4733,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20220219202441'), ('20220316162257'), ('20220516103329'), -('20220710133556'); +('20220710133556'), +('20220810131625');