module TenantLevelSecurity::SchemaDumper

Public Instance Methods

policies(stream) click to toggle source
# File lib/activerecord-tenant-level-security/schema_dumper.rb, line 10
def policies(stream)
  # Section Separator
  stream.puts if policies_in_database.any?

  policies_in_database.each do |policy|
    stream.puts(policy.to_schema)
  end
end
policies_in_database() click to toggle source
# File lib/activerecord-tenant-level-security/schema_dumper.rb, line 19
    def policies_in_database
      query = <<~SQL
        SELECT
          tablename
        FROM
          pg_policies
        WHERE
          policyname = 'tenant_policy'
        ORDER BY
          tablename;
      SQL
      results = ActiveRecord::Base.connection.execute(query)
      table_names = results.map { |x| x["tablename"] }

      table_names.map { |t| Policy.new(t) }
    end
tables(stream) click to toggle source
Calls superclass method
# File lib/activerecord-tenant-level-security/schema_dumper.rb, line 5
def tables(stream)
  super
  policies(stream)
end