# 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: 2024_11_10_120021) do
  # These are extensions that must be enabled in order to support this database
  enable_extension 'pg_catalog.plpgsql'

  create_table 'accounts', force: :cascade do |t|
    t.string 'name', null: false
    t.datetime 'created_at', null: false
    t.datetime 'updated_at', null: false
  end

  create_table 'active_storage_attachments', force: :cascade do |t|
    t.string 'name', null: false
    t.string 'record_type', null: false
    t.bigint 'record_id', null: false
    t.bigint 'blob_id', null: false
    t.datetime 'created_at', precision: nil, null: false
    t.index ['blob_id'], name: 'index_active_storage_attachments_on_blob_id'
    t.index %w[record_type record_id name blob_id],
            name: 'index_active_storage_attachments_uniqueness',
            unique: true
  end

  create_table 'active_storage_blobs', force: :cascade do |t|
    t.string 'key', null: false
    t.string 'filename', null: false
    t.string 'content_type'
    t.text 'metadata'
    t.bigint 'byte_size', null: false
    t.string 'checksum'
    t.datetime 'created_at', precision: nil, null: false
    t.string 'service_name', null: false
    t.index ['key'], name: 'index_active_storage_blobs_on_key', unique: true
  end

  create_table 'active_storage_variant_records', force: :cascade do |t|
    t.bigint 'blob_id', null: false
    t.string 'variation_digest', null: false
    t.index %w[blob_id variation_digest],
            name: 'index_active_storage_variant_records_uniqueness',
            unique: true
  end

  create_table 'contacts', force: :cascade do |t|
    t.bigint 'account_id', null: false
    t.bigint 'organization_id'
    t.string 'first_name', null: false
    t.string 'last_name', null: false
    t.string 'email'
    t.string 'phone'
    t.string 'address'
    t.string 'city'
    t.string 'region'
    t.string 'country'
    t.string 'postal_code'
    t.datetime 'deleted_at', precision: nil
    t.datetime 'created_at', null: false
    t.datetime 'updated_at', null: false
    t.index ['account_id'], name: 'index_contacts_on_account_id'
    t.index ['organization_id'], name: 'index_contacts_on_organization_id'
  end

  create_table 'organizations', force: :cascade do |t|
    t.bigint 'account_id', null: false
    t.string 'name', null: false
    t.string 'email'
    t.string 'phone'
    t.string 'address'
    t.string 'city'
    t.string 'region'
    t.string 'country'
    t.string 'postal_code'
    t.datetime 'deleted_at', precision: nil
    t.datetime 'created_at', null: false
    t.datetime 'updated_at', null: false
    t.index ['account_id'], name: 'index_organizations_on_account_id'
  end

  create_table 'users', force: :cascade do |t|
    t.bigint 'account_id', null: false
    t.string 'first_name', null: false
    t.string 'last_name', null: false
    t.string 'email', null: false
    t.boolean 'owner', default: false, null: false
    t.datetime 'deleted_at', precision: nil
    t.datetime 'created_at', null: false
    t.datetime 'updated_at', null: false
    t.string 'encrypted_password', default: '', null: false
    t.string 'reset_password_token'
    t.datetime 'reset_password_sent_at', precision: nil
    t.datetime 'remember_created_at', precision: nil
    t.index ['account_id'], name: 'index_users_on_account_id'
    t.index ['email'], name: 'index_users_on_email', unique: true
    t.index ['reset_password_token'],
            name: 'index_users_on_reset_password_token',
            unique: true
  end

  add_foreign_key 'active_storage_attachments',
                  'active_storage_blobs',
                  column: 'blob_id'
  add_foreign_key 'active_storage_variant_records',
                  'active_storage_blobs',
                  column: 'blob_id'
  add_foreign_key 'contacts', 'accounts'
  add_foreign_key 'contacts', 'organizations'
  add_foreign_key 'organizations', 'accounts'
  add_foreign_key 'users', 'accounts'
end
