Sha256: e8c3f1a3e6fb5a71ab27be69fe902389e5da5c744a221d4a4c9567ab3ce5f9b1

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

class SuperAuth::User < Sequel::Model(:super_auth_users)
  one_to_many :edges

  dataset_module do
    def with_edges
      join(:super_auth_edges, user_id: :id).select_all(:super_auth_users)
    end

    def with_groups
      with_edges.join(Group.from(Group.trees).as(:groups), id: :group_id).select(
        Sequel[:super_auth_users][:id].as(:id),
        Sequel[:super_auth_users][:id].as(:user_id),
        Sequel[:groups][:id].as(:group_id),
        Sequel[:super_auth_users][:name].as(:user_name),
        Sequel[:groups][:name].as(:group_name),
        Sequel[:super_auth_edges][:id].as(:edge_id),
        Sequel[:super_auth_edges][:permission_id].as(:edge_permission_id),
        Sequel[:super_auth_edges][:group_id].as(:edge_group_id),
        Sequel[:super_auth_edges][:user_id].as(:edge_user_id),
        Sequel[:super_auth_edges][:role_id].as(:edge_role_id),
        Sequel[:groups][:group_path],
        Sequel[:groups][:group_name_path],
        Sequel[:groups][:parent_id]
      )
    end

    def with_roles
      with_edges.join(Role.from(Role.trees).as(:roles), id: :role_id).select(
        Sequel[:users][:id].as(:id),
        Sequel[:users][:id].as(:user_id),
        Sequel[:roles][:id].as(:role_id),
        Sequel[:users][:name].as(:user_name),
        Sequel[:roles][:name].as(:role_name),
        Sequel[:edges][:id].as(:edge_id),
        Sequel[:edges][:permission_id].as(:edge_permission_id),
        Sequel[:edges][:group_id].as(:edge_group_id),
        Sequel[:edges][:user_id].as(:edge_user_id),
        Sequel[:edges][:role_id].as(:edge_role_id),
        Sequel[:roles][:role_path],
        Sequel[:roles][:role_name_path],
        Sequel[:roles][:parent_id]
      )
    end

    def with_roles_with_groups
      with_groups_with_roles
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
super_auth-0.1.4 lib/super_auth/user.rb