class DbMemoize::Migrations

Public Class Methods

create_tables(migration) click to toggle source
# File lib/db_memoize/migrations.rb, line 4
      def create_tables(migration)
        migration.execute <<~SQL
          CREATE SCHEMA IF NOT EXISTS db_memoize;

          CREATE TABLE IF NOT EXISTS db_memoize.memoized_values (
            entity_table_name varchar NOT NULL,
            entity_id         integer NOT NULL,
            method_name       varchar NOT NULL,

            val_string        varchar,
            val_integer       bigint,
            val_float         double precision,
            val_time          timestamp without time zone,
            val_object        jsonb,
            val_boolean       boolean,
            val_nil           boolean,
            created_at        timestamp without time zone NOT NULL
          );

          -- entity_id/entity_table_name should have a better chance to be useful, since
          -- there is more variance in entity_ids than there is in entity_table_names.
          DROP INDEX IF EXISTS db_memoize.memoized_attributes_idx2;

          CREATE INDEX IF NOT EXISTS memoized_attributes_idx3
            ON db_memoize.memoized_values(entity_id, entity_table_name);
        SQL
      end