# 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[7.0].define(version: 0) do create_table "clicks", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "message_id" t.integer "link_id" t.string "ip_address" t.string "country" t.string "city" t.string "user_agent" t.decimal "timestamp", precision: 18, scale: 6 t.index ["link_id"], name: "on_link_id" t.index ["message_id"], name: "on_message_id" end create_table "deliveries", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "message_id" t.string "status" t.integer "code" t.string "output", limit: 512 t.string "details", limit: 512 t.boolean "sent_with_ssl", default: false t.string "log_id", limit: 100 t.decimal "timestamp", precision: 18, scale: 6 t.decimal "time", precision: 8, scale: 2 t.index ["message_id"], name: "on_message_id" end create_table "links", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "message_id" t.string "token" t.string "hash" t.text "url" t.decimal "timestamp", precision: 18, scale: 6 t.index ["message_id"], name: "on_message_id" t.index ["token"], name: "on_token", length: 8 end create_table "live_stats", primary_key: ["minute", "type"], charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.string "type", limit: 20, null: false t.integer "minute", null: false t.integer "count" t.decimal "timestamp", precision: 18, scale: 6 end create_table "loads", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "message_id" t.string "ip_address" t.string "country" t.string "city" t.string "user_agent" t.decimal "timestamp", precision: 18, scale: 6 t.index ["message_id"], name: "on_message_id" end create_table "messages", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.string "token" t.string "scope", limit: 10 t.string "rcpt_to" t.string "mail_from" t.string "subject" t.string "message_id" t.decimal "timestamp", precision: 18, scale: 6 t.integer "route_id" t.integer "domain_id" t.integer "credential_id" t.string "status" t.boolean "held", default: false t.string "size" t.decimal "last_delivery_attempt", precision: 18, scale: 6 t.string "raw_table" t.integer "raw_body_id" t.integer "raw_headers_id" t.boolean "inspected", default: false t.boolean "spam", default: false t.decimal "spam_score", precision: 8, scale: 2, default: "0.0" t.boolean "threat", default: false t.string "threat_details" t.boolean "bounce", default: false t.integer "bounce_for_id", default: 0 t.string "tag" t.decimal "loaded", precision: 18, scale: 6 t.decimal "clicked", precision: 18, scale: 6 t.boolean "received_with_ssl" t.decimal "hold_expiry", precision: 18, scale: 6 t.integer "tracked_links", default: 0 t.integer "tracked_images", default: 0 t.integer "parsed", limit: 1, default: 0 t.integer "endpoint_id" t.string "endpoint_type" t.index ["bounce_for_id"], name: "on_bounce_for_id" t.index ["held"], name: "on_held" t.index ["mail_from", "timestamp"], name: "on_mail_from", length: { mail_from: 12 } t.index ["message_id"], name: "on_message_id", length: 8 t.index ["raw_table"], name: "on_raw_table", length: 14 t.index ["rcpt_to", "timestamp"], name: "on_rcpt_to", length: { rcpt_to: 12 } t.index ["scope", "spam", "status", "timestamp"], name: "on_scope_and_status", length: { scope: 1, status: 6 } t.index ["scope", "spam", "tag", "timestamp"], name: "on_scope_and_tag", length: { scope: 1, tag: 8 } t.index ["scope", "spam", "timestamp"], name: "on_scope_and_spam", length: { scope: 1 } t.index ["scope", "threat", "status", "timestamp"], name: "on_scope_and_thr_status", length: { scope: 1, status: 6 } t.index ["scope", "threat", "timestamp"], name: "on_scope_and_threat", length: { scope: 1 } t.index ["status"], name: "on_status", length: 8 t.index ["token"], name: "on_token", length: 6 end create_table "migrations", primary_key: "version", id: :integer, default: nil, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| end create_table "raw-2024-04-01", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-04-02", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-04-05", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-06-25", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-06-26", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-07-06", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-07-07", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-07-08", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-07-09", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw-2024-07-10", id: :integer, charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.binary "data", size: :long t.integer "next" end create_table "raw_message_sizes", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.string "table_name" t.bigint "size" t.index ["table_name"], name: "on_table_name", length: 14 end create_table "spam_checks", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "message_id" t.decimal "score", precision: 8, scale: 2 t.string "code" t.string "description" t.index ["code"], name: "on_code", length: 8 t.index ["message_id"], name: "on_message_id" end create_table "stats_daily", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "time" t.bigint "incoming" t.bigint "outgoing" t.bigint "spam" t.bigint "bounces" t.bigint "held" t.index ["time"], name: "on_time", unique: true end create_table "stats_hourly", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "time" t.bigint "incoming" t.bigint "outgoing" t.bigint "spam" t.bigint "bounces" t.bigint "held" t.index ["time"], name: "on_time", unique: true end create_table "stats_monthly", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "time" t.bigint "incoming" t.bigint "outgoing" t.bigint "spam" t.bigint "bounces" t.bigint "held" t.index ["time"], name: "on_time", unique: true end create_table "stats_yearly", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.integer "time" t.bigint "incoming" t.bigint "outgoing" t.bigint "spam" t.bigint "bounces" t.bigint "held" t.index ["time"], name: "on_time", unique: true end create_table "suppressions", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.string "type" t.string "address" t.string "reason" t.decimal "timestamp", precision: 18, scale: 6 t.decimal "keep_until", precision: 18, scale: 6 t.index ["address"], name: "on_address", length: 6 t.index ["keep_until"], name: "on_keep_until" end create_table "webhook_requests", id: :integer, charset: "utf8mb4", collation: "utf8mb4_unicode_ci", force: :cascade do |t| t.string "uuid" t.string "event" t.integer "attempt" t.decimal "timestamp", precision: 18, scale: 6 t.integer "status_code" t.text "body" t.text "payload" t.integer "will_retry", limit: 1 t.string "url" t.integer "webhook_id" t.index ["event"], name: "on_event", length: 8 t.index ["timestamp"], name: "on_timestamp" t.index ["uuid"], name: "on_uuid", length: 8 t.index ["webhook_id"], name: "on_webhook_id" end end