class Object
Public Instance Methods
_groups()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 38 def _groups create_table :groups do uuid :id, primary_key: true, default: Sequel.function(:gen_random_uuid) punk_state :state, null: false, default: "created" String :name, null: false, text: true String :icon, text: true jsonb :data, default: "{}" DateTime :created_at DateTime :updated_at foreign_key :tenant_id, :tenants, null: false, type: :uuid end end
_groups_users()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 51 def _groups_users create_table :groups_users do primary_key [:group_id, :user_id] foreign_key :group_id, :groups, null: false, type: :uuid foreign_key :user_id, :users, null: false, type: :uuid index [:group_id, :user_id] end end
_hide?(name)
click to toggle source
# File lib/punk/commands/list.rb, line 31 def _hide?(name) name.nil? || (name =~ /^PUNK/) && !opts[:all] end
_identities()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 60 def _identities create_enum(:claim_type, %w[email phone]) create_table :identities do uuid :id, primary_key: true, default: Sequel.function(:gen_random_uuid) punk_state :state, null: false, default: "created" claim_type :claim_type, null: false String :claim, text: true, null: false, unique: true jsonb :data, default: "{}" DateTime :created_at DateTime :updated_at foreign_key :user_id, :users, null: true, type: :uuid end end
_sessions()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 74 def _sessions create_enum(:session_state, %w[pending created active deleted expired]) create_table :sessions do uuid :id, primary_key: true, default: Sequel.function(:gen_random_uuid) uuid :slug, default: Sequel.function(:gen_random_uuid) session_state :state, null: false, default: "created" File :salt, text: true File :hash, text: true Integer :attempt_count, null: false, default: 0 cidr :remote_addr, null: false, default: "127.0.0.1" String :user_agent, text: true, null: false, default: "Mozilla/5.0 (compatible; Punk!; +https://punk.kranzky.com)" jsonb :data, default: "{}" DateTime :created_at DateTime :updated_at foreign_key :identity_id, :identities, null: false, type: :uuid end end
_tenants()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 3 def _tenants create_table :tenants do uuid :id, primary_key: true, default: Sequel.function(:gen_random_uuid) punk_state :state, null: false, default: "created" String :name, null: false, text: true String :icon, text: true jsonb :data, default: "{}" DateTime :created_at DateTime :updated_at end end
_tenants_users()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 29 def _tenants_users create_table :tenants_users do primary_key [:tenant_id, :user_id] foreign_key :tenant_id, :tenants, null: false, type: :uuid foreign_key :user_id, :users, null: false, type: :uuid index [:tenant_id, :user_id] end end
_users()
click to toggle source
# File lib/punk/migrations/001_punk.rb, line 15 def _users create_table :users do uuid :id, primary_key: true, default: Sequel.function(:gen_random_uuid) punk_state :state, null: false, default: "created" String :name, null: false, text: true String :icon, text: true String :email, text: true, unique: true String :phone, text: true, unique: true jsonb :data, default: "{}" DateTime :created_at DateTime :updated_at end end
perform(action_class, **kwargs)
click to toggle source
# File lib/punk/core/pry.rb, line 3 def perform(action_class, **kwargs) raise PUNK::InternalServerError, "Not an action: #{action_class}" unless action_class < PUNK::Action action_class.perform(**kwargs) ensure SemanticLogger.flush end
present(view_class, **kwargs)
click to toggle source
# File lib/punk/core/pry.rb, line 10 def present(view_class, **kwargs) raise PUNK::InternalServerError, "Not a view: #{view_class}" unless view_class < PUNK::View view_class.present(**kwargs) ensure SemanticLogger.flush end
process()
click to toggle source
# File lib/punk/commands/auth.rb, line 8 def process claim = opts[:claim] SemanticLogger.flush claim ||= ask("Email or Phone: ") response = PUNK.app.call( "REQUEST_METHOD" => "POST", "PATH_INFO" => "/sessions", "CONTENT_TYPE" => "text/json", "SCRIPT_NAME" => "", "rack.input" => StringIO.new({claim: claim}.to_json) ) response = ActiveSupport::JSON.decode(response[-1].first).deep_symbolize_keys return if response[:errors].present? slug = response[:slug] authenticated = false while authenticated == false SemanticLogger.flush secret = ask("Secret: ") { |q| q.echo = "*" } response = PUNK.app.call( "REQUEST_METHOD" => "PATCH", "PATH_INFO" => "/sessions/#{slug}", "CONTENT_TYPE" => "text/json", "SCRIPT_NAME" => "", "rack.input" => StringIO.new({secret: secret}.to_json) ) response = ActiveSupport::JSON.decode(response[-1].first).deep_symbolize_keys break if response[:errors].present? && response[:errors].first != "Secret is incorrect" authenticated = response[:message].present? end response[:message] end
reload!()
click to toggle source
# File lib/punk/core/pry.rb, line 24 def reload! ["actions", "models", "views", "services", "workers"].each do |dir| path = File.join(PUNK.get.app.path, dir) Dir.glob(File.join(path, "**/*.rb")).each { |file| load(file) } end "Reloaded all actions, models, views, services and workers." ensure SemanticLogger.flush end
run(service_class, **kwargs)
click to toggle source
# File lib/punk/core/pry.rb, line 17 def run(service_class, **kwargs) raise PUNK::InternalServerError, "Not a service: #{service_class}" unless service_class.superclass == PUNK::Service service_class.run(**kwargs).result ensure SemanticLogger.flush end