add solid queue
							parent
							
								
									7c14e469c9
								
							
						
					
					
						commit
						b368a750fe
					
				
							
								
								
									
										3
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										3
									
								
								Gemfile
								
								
								
								
							| 
						 | 
					@ -28,6 +28,9 @@ gem "thruster", require: false
 | 
				
			||||||
# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
 | 
					# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
 | 
				
			||||||
# gem "image_processing", "~> 1.2"
 | 
					# gem "image_processing", "~> 1.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gem "solid_queue"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group :development, :test do
 | 
					group :development, :test do
 | 
				
			||||||
  # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
 | 
					  # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
 | 
				
			||||||
  gem "debug", platforms: %i[ mri windows ], require: "debug/prelude"
 | 
					  gem "debug", platforms: %i[ mri windows ], require: "debug/prelude"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										14
									
								
								Gemfile.lock
								
								
								
								
							
							
						
						
									
										14
									
								
								Gemfile.lock
								
								
								
								
							| 
						 | 
					@ -110,6 +110,11 @@ GEM
 | 
				
			||||||
    drb (2.2.3)
 | 
					    drb (2.2.3)
 | 
				
			||||||
    erb (5.0.1)
 | 
					    erb (5.0.1)
 | 
				
			||||||
    erubi (1.13.1)
 | 
					    erubi (1.13.1)
 | 
				
			||||||
 | 
					    et-orbi (1.2.11)
 | 
				
			||||||
 | 
					      tzinfo
 | 
				
			||||||
 | 
					    fugit (1.11.1)
 | 
				
			||||||
 | 
					      et-orbi (~> 1, >= 1.2.11)
 | 
				
			||||||
 | 
					      raabro (~> 1.4)
 | 
				
			||||||
    globalid (1.2.1)
 | 
					    globalid (1.2.1)
 | 
				
			||||||
      activesupport (>= 6.1)
 | 
					      activesupport (>= 6.1)
 | 
				
			||||||
    i18n (1.14.7)
 | 
					    i18n (1.14.7)
 | 
				
			||||||
| 
						 | 
					@ -190,6 +195,7 @@ GEM
 | 
				
			||||||
    public_suffix (6.0.2)
 | 
					    public_suffix (6.0.2)
 | 
				
			||||||
    puma (6.6.0)
 | 
					    puma (6.6.0)
 | 
				
			||||||
      nio4r (~> 2.0)
 | 
					      nio4r (~> 2.0)
 | 
				
			||||||
 | 
					    raabro (1.4.0)
 | 
				
			||||||
    racc (1.8.1)
 | 
					    racc (1.8.1)
 | 
				
			||||||
    rack (3.1.16)
 | 
					    rack (3.1.16)
 | 
				
			||||||
    rack-session (2.1.1)
 | 
					    rack-session (2.1.1)
 | 
				
			||||||
| 
						 | 
					@ -277,6 +283,13 @@ GEM
 | 
				
			||||||
      rexml (~> 3.2, >= 3.2.5)
 | 
					      rexml (~> 3.2, >= 3.2.5)
 | 
				
			||||||
      rubyzip (>= 1.2.2, < 3.0)
 | 
					      rubyzip (>= 1.2.2, < 3.0)
 | 
				
			||||||
      websocket (~> 1.0)
 | 
					      websocket (~> 1.0)
 | 
				
			||||||
 | 
					    solid_queue (1.1.5)
 | 
				
			||||||
 | 
					      activejob (>= 7.1)
 | 
				
			||||||
 | 
					      activerecord (>= 7.1)
 | 
				
			||||||
 | 
					      concurrent-ruby (>= 1.3.1)
 | 
				
			||||||
 | 
					      fugit (~> 1.11.0)
 | 
				
			||||||
 | 
					      railties (>= 7.1)
 | 
				
			||||||
 | 
					      thor (~> 1.3.1)
 | 
				
			||||||
    stringio (3.1.7)
 | 
					    stringio (3.1.7)
 | 
				
			||||||
    thor (1.3.2)
 | 
					    thor (1.3.2)
 | 
				
			||||||
    thruster (0.1.14)
 | 
					    thruster (0.1.14)
 | 
				
			||||||
| 
						 | 
					@ -334,6 +347,7 @@ DEPENDENCIES
 | 
				
			||||||
  rails (~> 8.0.2)
 | 
					  rails (~> 8.0.2)
 | 
				
			||||||
  rubocop-rails-omakase
 | 
					  rubocop-rails-omakase
 | 
				
			||||||
  selenium-webdriver
 | 
					  selenium-webdriver
 | 
				
			||||||
 | 
					  solid_queue
 | 
				
			||||||
  thruster
 | 
					  thruster
 | 
				
			||||||
  tzinfo-data
 | 
					  tzinfo-data
 | 
				
			||||||
  web-console
 | 
					  web-console
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					class NetflixShakti
 | 
				
			||||||
 | 
					  URL = "https://www.netflix.com/de/".freeze
 | 
				
			||||||
 | 
					  SHAKTI_PART = "BUILD_IDENTIFIER".freeze
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.call
 | 
				
			||||||
 | 
					    RestClient.get(URL)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.current_version
 | 
				
			||||||
 | 
					    body = call.body
 | 
				
			||||||
 | 
					    shakti = body.split(SHAKTI_PART)[1].split("\"")[2]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    shakti
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env ruby
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_relative "../config/environment"
 | 
				
			||||||
 | 
					require "solid_queue/cli"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SolidQueue::Cli.start(ARGV)
 | 
				
			||||||
| 
						 | 
					@ -21,8 +21,13 @@ default: &default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
development:
 | 
					development:
 | 
				
			||||||
  <<: *default
 | 
					  primary:
 | 
				
			||||||
  database: plays_hub_development
 | 
					    <<: *default
 | 
				
			||||||
 | 
					    database: plays_hub_development
 | 
				
			||||||
 | 
					  queue:
 | 
				
			||||||
 | 
					    <<: *default
 | 
				
			||||||
 | 
					    database: plays_hub_development_queue
 | 
				
			||||||
 | 
					    migrations_paths: db/queue_migrate
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # The specified database role being used to connect to PostgreSQL.
 | 
					  # The specified database role being used to connect to PostgreSQL.
 | 
				
			||||||
  # To create additional roles in PostgreSQL see `$ createuser --help`.
 | 
					  # To create additional roles in PostgreSQL see `$ createuser --help`.
 | 
				
			||||||
| 
						 | 
					@ -79,7 +84,13 @@ test:
 | 
				
			||||||
# for a full overview on how database connection configuration can be specified.
 | 
					# for a full overview on how database connection configuration can be specified.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
production:
 | 
					production:
 | 
				
			||||||
  <<: *default
 | 
					  primary:
 | 
				
			||||||
  database: plays_hub_production
 | 
					    <<: *default
 | 
				
			||||||
  username: plays_hub
 | 
					    database: plays_hub_production
 | 
				
			||||||
  password: <%= ENV["PLAYS_HUB_DATABASE_PASSWORD"] %>
 | 
					    username: plays_hub
 | 
				
			||||||
 | 
					    password: <%= ENV["PLAYS_HUB_DATABASE_PASSWORD"] %>
 | 
				
			||||||
 | 
					  queue:
 | 
				
			||||||
 | 
					    <<: *default
 | 
				
			||||||
 | 
					    database: plays_hub_queue
 | 
				
			||||||
 | 
					    username: plays_hub
 | 
				
			||||||
 | 
					    password: <%= ENV["PLAYS_HUB_QUEUE_DATABASE_PASSWORD"] %>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,4 +57,8 @@ Rails.application.configure do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
 | 
					  # Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
 | 
				
			||||||
  # config.generators.apply_rubocop_autocorrect_after_generate!
 | 
					  # config.generators.apply_rubocop_autocorrect_after_generate!
 | 
				
			||||||
 | 
					  #
 | 
				
			||||||
 | 
					  #
 | 
				
			||||||
 | 
					  config.active_job.queue_adapter = :solid_queue
 | 
				
			||||||
 | 
					  config.solid_queue.connects_to = { database: { writing: :queue } }
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,8 +49,11 @@ Rails.application.configure do
 | 
				
			||||||
  # Replace the default in-process memory cache store with a durable alternative.
 | 
					  # Replace the default in-process memory cache store with a durable alternative.
 | 
				
			||||||
  # config.cache_store = :mem_cache_store
 | 
					  # config.cache_store = :mem_cache_store
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Replace the default in-process and non-durable queuing backend for Active Job.
 | 
					  # Replace the default in-process and non-durable queuing backend for Active Job.
 | 
				
			||||||
  # config.active_job.queue_adapter = :resque
 | 
					  config.active_job.queue_adapter = :solid_queue
 | 
				
			||||||
 | 
					  config.solid_queue.connects_to = { database: { writing: :queue } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
 | 
					  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
 | 
				
			||||||
  # the I18n.default_locale when a translation cannot be found).
 | 
					  # the I18n.default_locale when a translation cannot be found).
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					default: &default
 | 
				
			||||||
 | 
					  dispatchers:
 | 
				
			||||||
 | 
					    - polling_interval: 1
 | 
				
			||||||
 | 
					      batch_size: 500
 | 
				
			||||||
 | 
					  workers:
 | 
				
			||||||
 | 
					    - queues: "*"
 | 
				
			||||||
 | 
					      threads: 3
 | 
				
			||||||
 | 
					      processes: <%= ENV.fetch("JOB_CONCURRENCY", 1) %>
 | 
				
			||||||
 | 
					      polling_interval: 0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					development:
 | 
				
			||||||
 | 
					  <<: *default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					test:
 | 
				
			||||||
 | 
					  <<: *default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					production:
 | 
				
			||||||
 | 
					  <<: *default
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					# production:
 | 
				
			||||||
 | 
					#   periodic_cleanup:
 | 
				
			||||||
 | 
					#     class: CleanSoftDeletedRecordsJob
 | 
				
			||||||
 | 
					#     queue: background
 | 
				
			||||||
 | 
					#     args: [ 1000, { batch_size: 500 } ]
 | 
				
			||||||
 | 
					#     schedule: every hour
 | 
				
			||||||
 | 
					#   periodic_command:
 | 
				
			||||||
 | 
					#     command: "SoftDeletedRecord.due.delete_all"
 | 
				
			||||||
 | 
					#     priority: 2
 | 
				
			||||||
 | 
					#     schedule: at 5am every day
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,144 @@
 | 
				
			||||||
 | 
					# This file is auto-generated from the current state of the database. Instead
 | 
				
			||||||
 | 
					# of editing this file, please use the migrations feature of Active Record to
 | 
				
			||||||
 | 
					# incrementally modify your database, and then regenerate this schema definition.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file is the source Rails uses to define your schema when running `bin/rails
 | 
				
			||||||
 | 
					# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
 | 
				
			||||||
 | 
					# be faster and is potentially less error prone than running all of your
 | 
				
			||||||
 | 
					# migrations from scratch. Old migrations may fail to apply correctly if those
 | 
				
			||||||
 | 
					# migrations use external dependencies or application code.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# It's strongly recommended that you check this file into your version control system.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ActiveRecord::Schema[8.0].define(version: 1) do
 | 
				
			||||||
 | 
					  # These are extensions that must be enabled in order to support this database
 | 
				
			||||||
 | 
					  enable_extension "pg_catalog.plpgsql"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_blocked_executions", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.bigint "job_id", null: false
 | 
				
			||||||
 | 
					    t.string "queue_name", null: false
 | 
				
			||||||
 | 
					    t.integer "priority", default: 0, null: false
 | 
				
			||||||
 | 
					    t.string "concurrency_key", null: false
 | 
				
			||||||
 | 
					    t.datetime "expires_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["concurrency_key", "priority", "job_id"], name: "index_solid_queue_blocked_executions_for_release"
 | 
				
			||||||
 | 
					    t.index ["expires_at", "concurrency_key"], name: "index_solid_queue_blocked_executions_for_maintenance"
 | 
				
			||||||
 | 
					    t.index ["job_id"], name: "index_solid_queue_blocked_executions_on_job_id", unique: true
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_claimed_executions", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.bigint "job_id", null: false
 | 
				
			||||||
 | 
					    t.bigint "process_id"
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["job_id"], name: "index_solid_queue_claimed_executions_on_job_id", unique: true
 | 
				
			||||||
 | 
					    t.index ["process_id", "job_id"], name: "index_solid_queue_claimed_executions_on_process_id_and_job_id"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_failed_executions", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.bigint "job_id", null: false
 | 
				
			||||||
 | 
					    t.text "error"
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["job_id"], name: "index_solid_queue_failed_executions_on_job_id", unique: true
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_jobs", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.string "queue_name", null: false
 | 
				
			||||||
 | 
					    t.string "class_name", null: false
 | 
				
			||||||
 | 
					    t.text "arguments"
 | 
				
			||||||
 | 
					    t.integer "priority", default: 0, null: false
 | 
				
			||||||
 | 
					    t.string "active_job_id"
 | 
				
			||||||
 | 
					    t.datetime "scheduled_at"
 | 
				
			||||||
 | 
					    t.datetime "finished_at"
 | 
				
			||||||
 | 
					    t.string "concurrency_key"
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "updated_at", null: false
 | 
				
			||||||
 | 
					    t.index ["active_job_id"], name: "index_solid_queue_jobs_on_active_job_id"
 | 
				
			||||||
 | 
					    t.index ["class_name"], name: "index_solid_queue_jobs_on_class_name"
 | 
				
			||||||
 | 
					    t.index ["finished_at"], name: "index_solid_queue_jobs_on_finished_at"
 | 
				
			||||||
 | 
					    t.index ["queue_name", "finished_at"], name: "index_solid_queue_jobs_for_filtering"
 | 
				
			||||||
 | 
					    t.index ["scheduled_at", "finished_at"], name: "index_solid_queue_jobs_for_alerting"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_pauses", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.string "queue_name", null: false
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["queue_name"], name: "index_solid_queue_pauses_on_queue_name", unique: true
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_processes", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.string "kind", null: false
 | 
				
			||||||
 | 
					    t.datetime "last_heartbeat_at", null: false
 | 
				
			||||||
 | 
					    t.bigint "supervisor_id"
 | 
				
			||||||
 | 
					    t.integer "pid", null: false
 | 
				
			||||||
 | 
					    t.string "hostname"
 | 
				
			||||||
 | 
					    t.text "metadata"
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.string "name", null: false
 | 
				
			||||||
 | 
					    t.index ["last_heartbeat_at"], name: "index_solid_queue_processes_on_last_heartbeat_at"
 | 
				
			||||||
 | 
					    t.index ["name", "supervisor_id"], name: "index_solid_queue_processes_on_name_and_supervisor_id", unique: true
 | 
				
			||||||
 | 
					    t.index ["supervisor_id"], name: "index_solid_queue_processes_on_supervisor_id"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_ready_executions", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.bigint "job_id", null: false
 | 
				
			||||||
 | 
					    t.string "queue_name", null: false
 | 
				
			||||||
 | 
					    t.integer "priority", default: 0, null: false
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["job_id"], name: "index_solid_queue_ready_executions_on_job_id", unique: true
 | 
				
			||||||
 | 
					    t.index ["priority", "job_id"], name: "index_solid_queue_poll_all"
 | 
				
			||||||
 | 
					    t.index ["queue_name", "priority", "job_id"], name: "index_solid_queue_poll_by_queue"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_recurring_executions", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.bigint "job_id", null: false
 | 
				
			||||||
 | 
					    t.string "task_key", null: false
 | 
				
			||||||
 | 
					    t.datetime "run_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["job_id"], name: "index_solid_queue_recurring_executions_on_job_id", unique: true
 | 
				
			||||||
 | 
					    t.index ["task_key", "run_at"], name: "index_solid_queue_recurring_executions_on_task_key_and_run_at", unique: true
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_recurring_tasks", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.string "key", null: false
 | 
				
			||||||
 | 
					    t.string "schedule", null: false
 | 
				
			||||||
 | 
					    t.string "command", limit: 2048
 | 
				
			||||||
 | 
					    t.string "class_name"
 | 
				
			||||||
 | 
					    t.text "arguments"
 | 
				
			||||||
 | 
					    t.string "queue_name"
 | 
				
			||||||
 | 
					    t.integer "priority", default: 0
 | 
				
			||||||
 | 
					    t.boolean "static", default: true, null: false
 | 
				
			||||||
 | 
					    t.text "description"
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "updated_at", null: false
 | 
				
			||||||
 | 
					    t.index ["key"], name: "index_solid_queue_recurring_tasks_on_key", unique: true
 | 
				
			||||||
 | 
					    t.index ["static"], name: "index_solid_queue_recurring_tasks_on_static"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_scheduled_executions", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.bigint "job_id", null: false
 | 
				
			||||||
 | 
					    t.string "queue_name", null: false
 | 
				
			||||||
 | 
					    t.integer "priority", default: 0, null: false
 | 
				
			||||||
 | 
					    t.datetime "scheduled_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.index ["job_id"], name: "index_solid_queue_scheduled_executions_on_job_id", unique: true
 | 
				
			||||||
 | 
					    t.index ["scheduled_at", "priority", "job_id"], name: "index_solid_queue_dispatch_all"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  create_table "solid_queue_semaphores", force: :cascade do |t|
 | 
				
			||||||
 | 
					    t.string "key", null: false
 | 
				
			||||||
 | 
					    t.integer "value", default: 1, null: false
 | 
				
			||||||
 | 
					    t.datetime "expires_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "created_at", null: false
 | 
				
			||||||
 | 
					    t.datetime "updated_at", null: false
 | 
				
			||||||
 | 
					    t.index ["expires_at"], name: "index_solid_queue_semaphores_on_expires_at"
 | 
				
			||||||
 | 
					    t.index ["key", "value"], name: "index_solid_queue_semaphores_on_key_and_value"
 | 
				
			||||||
 | 
					    t.index ["key"], name: "index_solid_queue_semaphores_on_key", unique: true
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add_foreign_key "solid_queue_blocked_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
 | 
				
			||||||
 | 
					  add_foreign_key "solid_queue_claimed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
 | 
				
			||||||
 | 
					  add_foreign_key "solid_queue_failed_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
 | 
				
			||||||
 | 
					  add_foreign_key "solid_queue_ready_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
 | 
				
			||||||
 | 
					  add_foreign_key "solid_queue_recurring_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
 | 
				
			||||||
 | 
					  add_foreign_key "solid_queue_scheduled_executions", "solid_queue_jobs", column: "job_id", on_delete: :cascade
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -16,14 +16,14 @@ ActiveRecord::Schema[8.0].define(version: 2020_11_01_201031) do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  create_table "activities", force: :cascade do |t|
 | 
					  create_table "activities", force: :cascade do |t|
 | 
				
			||||||
    t.bigint "user_id"
 | 
					    t.bigint "user_id"
 | 
				
			||||||
    t.datetime "started_at", null: false
 | 
					    t.datetime "started_at", precision: nil, null: false
 | 
				
			||||||
    t.datetime "ended_at"
 | 
					    t.datetime "ended_at", precision: nil
 | 
				
			||||||
    t.string "platform"
 | 
					    t.string "platform"
 | 
				
			||||||
    t.string "item_ref", null: false
 | 
					    t.string "item_ref", null: false
 | 
				
			||||||
    t.string "item_title", null: false
 | 
					    t.string "item_title", null: false
 | 
				
			||||||
    t.string "item_length"
 | 
					    t.string "item_length"
 | 
				
			||||||
    t.datetime "created_at", null: false
 | 
					    t.datetime "created_at", precision: nil, null: false
 | 
				
			||||||
    t.datetime "updated_at", null: false
 | 
					    t.datetime "updated_at", precision: nil, null: false
 | 
				
			||||||
    t.index ["platform"], name: "index_activities_on_platform"
 | 
					    t.index ["platform"], name: "index_activities_on_platform"
 | 
				
			||||||
    t.index ["started_at"], name: "index_activities_on_started_at"
 | 
					    t.index ["started_at"], name: "index_activities_on_started_at"
 | 
				
			||||||
    t.index ["user_id"], name: "index_activities_on_user_id"
 | 
					    t.index ["user_id"], name: "index_activities_on_user_id"
 | 
				
			||||||
| 
						 | 
					@ -53,6 +53,6 @@ ActiveRecord::Schema[8.0].define(version: 2020_11_01_201031) do
 | 
				
			||||||
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
 | 
					    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  add_foreign_key "activities", "users"
 | 
					  add_foreign_key "activities", "users", name: "activities_user_id_fkey"
 | 
				
			||||||
  add_foreign_key "logins", "users"
 | 
					  add_foreign_key "logins", "users"
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								public/icon.png
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								public/icon.png
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 103 KiB  | 
| 
						 | 
					@ -1,3 +1,18 @@
 | 
				
			||||||
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg">
 | 
					<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
 | 
				
			||||||
  <circle cx="256" cy="256" r="256" fill="red"/>
 | 
					  <defs>
 | 
				
			||||||
 | 
					    <radialGradient id="liquidGreen" cx="50%" cy="40%" r="70%" fx="60%" fy="30%">
 | 
				
			||||||
 | 
					      <stop offset="0%" stop-color="#A8FFC5"/>
 | 
				
			||||||
 | 
					      <stop offset="70%" stop-color="#7EE8B9"/>
 | 
				
			||||||
 | 
					      <stop offset="100%" stop-color="#6AD1A5"/>
 | 
				
			||||||
 | 
					    </radialGradient>
 | 
				
			||||||
 | 
					    <filter id="goo" x="-20%" y="-20%" width="140%" height="140%" filterUnits="objectBoundingBox">
 | 
				
			||||||
 | 
					      <feGaussianBlur in="SourceGraphic" stdDeviation="2" result="blur"/>
 | 
				
			||||||
 | 
					      <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 12 -5" result="goo"/>
 | 
				
			||||||
 | 
					      <feBlend in="SourceGraphic" in2="goo" mode="normal"/>
 | 
				
			||||||
 | 
					    </filter>
 | 
				
			||||||
 | 
					  </defs>
 | 
				
			||||||
 | 
					  <!-- Liquid blob background -->
 | 
				
			||||||
 | 
					  <path filter="url(#goo)" d="M40 8c12 0 23 7 27 17 4 10-2 23-10 31s-21 12-32 7c-11-5-18-17-15-28C14 15 28 8 40 8z" fill="url(#liquidGreen)"/>
 | 
				
			||||||
 | 
					  <!-- Play triangle -->
 | 
				
			||||||
 | 
					  <polygon points="34,27 34,53 54,40" fill="#fff" style="filter: drop-shadow(0 2px 6px #7EE8B9aa)"/>
 | 
				
			||||||
</svg>
 | 
					</svg>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 1.0 KiB  | 
		Loading…
	
		Reference in New Issue