snf_core 0.2.98 → 0.2.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/snf_core/auth_controller.rb +18 -3
  3. data/app/models/snf_core/quotation.rb +2 -2
  4. data/db/migrate/20250226110217_create_snf_core_addresses.rb +2 -2
  5. data/db/migrate/20250312043359_create_snf_core_quotations.rb +2 -2
  6. data/lib/snf_core/version.rb +1 -1
  7. data/spec/dummy/log/development.log +264 -0
  8. data/spec/dummy/log/test.log +16208 -0
  9. data/spec/dummy/tmp/storage/3y/fu/3yfusxgm9k67dmwa3oo0pp8yzh1u +0 -0
  10. data/spec/dummy/tmp/storage/5m/r3/5mr3d70rwav44966cmlzafropl6p +0 -0
  11. data/spec/dummy/tmp/storage/5z/u2/5zu2fkv6tm01qppyyuik90qr4bug +0 -0
  12. data/spec/dummy/tmp/storage/c0/mt/c0mtlkx0368uvpzfgmd38syzoy2v +0 -0
  13. data/spec/dummy/tmp/storage/cr/ny/crnyduu73jm6jtqt2cbq1dz3x8gr +0 -0
  14. data/spec/dummy/tmp/storage/dn/m1/dnm1qr855gwf7ppy7sft1dxgsnfd +0 -0
  15. data/spec/dummy/tmp/storage/h6/un/h6undns4303m8l8ft0pkffjiren6 +0 -0
  16. data/spec/dummy/tmp/storage/mx/lo/mxloqbggy6drma5ov1998tgrkman +0 -0
  17. data/spec/dummy/tmp/storage/qc/vv/qcvvq3ncfl03yp4pc18jyreg8boz +0 -0
  18. data/spec/dummy/tmp/storage/t3/tj/t3tj5uirsnvxchyl1hho04dmh49t +0 -0
  19. data/spec/dummy/tmp/storage/td/9t/td9t86soc5nypxfis5tqyp5pcx9x +0 -0
  20. data/spec/dummy/tmp/storage/tj/e8/tje84os9t9sr081jgbxri4qvi13j +0 -0
  21. data/spec/dummy/tmp/storage/uw/cb/uwcbklmtksvymz23ijjgkiup5o2e +0 -0
  22. data/spec/dummy/tmp/storage/wv/61/wv61b1fuar05sjp9q0cnx58xplnh +0 -0
  23. data/spec/dummy/tmp/storage/y5/xu/y5xuawt4vxn5vmwzruc3juv1bqk4 +0 -0
  24. data/spec/examples.txt +197 -197
  25. data/spec/models/snf_core/quotation_spec.rb +0 -2
  26. data/spec/requests/snf_core/auth_spec.rb +18 -9
  27. metadata +16 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd314fc21e427da9d504f8db415fff1d4d66e3b3ad00e675778180b596ca9b1d
4
- data.tar.gz: 8f6c6e6c7d54ca74bb588461dda607b973a6ac07c6b3b609918681d6af753ea6
3
+ metadata.gz: 06ef258596e99497b2a3f679b7cc72640b262d5305fdde5400d3a992469b7ca8
4
+ data.tar.gz: 9c4a3819df5295dde947a09c2e2046510975ef5f5707bad6e5b267575e6d6019
5
5
  SHA512:
6
- metadata.gz: 4397affa157cbadfccad676c739dca187953acb090b1e3d77c93dfe3c729cdf2631c700565b4f6bd38691c1e36a4387261a1dace0786245d6250a8bb6ce36789
7
- data.tar.gz: 470a2d192ebabec579dd38bbe92daf77935b4761d7968a6247339b24c18cf8c4f96511fbc12910e86d930eec256c1c2402f48f5a18fb01740aa5b47c0216686a
6
+ metadata.gz: 8260b98d145d7d4dc5053ff4c61c1b3279758287cf92c4757b92529bd5f303dda9d520d33aece739890cdb9661a4cedba4fbb7f5917aa8d8f89f97dee6e96475
7
+ data.tar.gz: 6fa672ab9c77db1b963984b9596c475a05b4a7c490daed1e572d4354fda2a13ed4d2322da8948fcc7eca2a5346b4758becb24b9e164ab2f39056d041b0614225
@@ -4,14 +4,17 @@ module SnfCore
4
4
 
5
5
  def signup
6
6
  ActiveRecord::Base.transaction do
7
+ @address = Address.new(address_params)
8
+
7
9
  @user = User.new(user_params)
10
+ @user.address = @address
8
11
 
9
- if @user.save
12
+ if @user.save && @address.save
10
13
  @business = Business.new(
11
14
  user: @user,
12
15
  business_name: signup_params[:business_name],
13
16
  tin_number: signup_params[:tin_number],
14
- business_type: signup_params[:business_type],
17
+ business_type: signup_params[:business_type]
15
18
  )
16
19
 
17
20
  if @business.save
@@ -21,7 +24,8 @@ module SnfCore
21
24
  render json: { errors: @business.errors.full_messages }, status: :unprocessable_entity
22
25
  end
23
26
  else
24
- render json: { errors: @user.errors.full_messages }, status: :unprocessable_entity
27
+ errors = @user.errors.full_messages + @address.errors.full_messages
28
+ render json: { errors: errors }, status: :unprocessable_entity
25
29
  end
26
30
  end
27
31
  end
@@ -67,5 +71,16 @@ module SnfCore
67
71
  :gender, :verified_at, :verified_by_id, :address_id
68
72
  )
69
73
  end
74
+
75
+ def address_params
76
+ params.require(:address).permit(
77
+ :address_type,
78
+ :city,
79
+ :sub_city,
80
+ :woreda,
81
+ :latitude,
82
+ :longitude
83
+ )
84
+ end
70
85
  end
71
86
  end
@@ -8,7 +8,7 @@ module SnfCore
8
8
  validates :status, presence: true
9
9
  validate :valid_until_cannot_be_in_past
10
10
  validate :delivery_date_cannot_be_in_past
11
-
11
+
12
12
  before_validation :check_expiration
13
13
 
14
14
  enum :status, {
@@ -19,7 +19,7 @@ module SnfCore
19
19
  }
20
20
 
21
21
  private
22
-
22
+
23
23
  def check_expiration
24
24
  if valid_until.present? && valid_until < DateTime.current && !expired?
25
25
  self.status = :expired
@@ -5,8 +5,8 @@ class CreateSnfCoreAddresses < ActiveRecord::Migration[8.0]
5
5
  t.string :city, null: false
6
6
  t.string :sub_city, null: false
7
7
  t.string :woreda
8
- t.decimal :latitude, null: false
9
- t.decimal :longitude, null: false
8
+ t.decimal :latitude
9
+ t.decimal :longitude
10
10
 
11
11
  t.timestamps
12
12
  end
@@ -1,8 +1,8 @@
1
1
  class CreateSnfCoreQuotations < ActiveRecord::Migration[8.0]
2
2
  def change
3
3
  create_table :snf_core_quotations do |t|
4
- t.references :item_request, null: false, foreign_key: {to_table: :snf_core_item_requests}
5
- t.decimal :price , null: false
4
+ t.references :item_request, null: false, foreign_key: { to_table: :snf_core_item_requests }
5
+ t.decimal :price, null: false
6
6
  t.date :delivery_date, null: false
7
7
  t.datetime :valid_until, null: false
8
8
  t.integer :status, null: false, default: 0
@@ -1,3 +1,3 @@
1
1
  module SnfCore
2
- VERSION = "0.2.98"
2
+ VERSION = "0.2.99"
3
3
  end
@@ -6084,3 +6084,267 @@ FOREIGN KEY ("user_id")
6084
6084
  ActiveRecord::InternalMetadata Update (0.8ms) UPDATE "ar_internal_metadata" SET "value" = 'test', "updated_at" = '2025-03-12 05:35:29.022797' WHERE "ar_internal_metadata"."key" = 'environment' /*application='Dummy'*/
6085
6085
  ActiveRecord::InternalMetadata Load (0.5ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'schema_sha1' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6086
6086
  ActiveRecord::InternalMetadata Create (0.7ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ('schema_sha1', 'ce684782ac0a2f19cbccaf01724c2ba2ab15f8bc', '2025-03-12 05:35:29.027135', '2025-03-12 05:35:29.027140') RETURNING "key" /*application='Dummy'*/
6087
+  (0.2ms) SELECT pg_try_advisory_lock(869468062957908540) /*application='Dummy'*/
6088
+ ActiveRecord::SchemaMigration Load (3.0ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/
6089
+ ActiveRecord::InternalMetadata Load (4.1ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'environment' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6090
+  (0.4ms) SELECT pg_advisory_unlock(869468062957908540) /*application='Dummy'*/
6091
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/
6092
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/
6093
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'environment' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6094
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/
6095
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'environment' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6096
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/
6097
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'environment' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6098
+ SQL (0.1ms) SET search_path TO public /*application='Dummy'*/
6099
+  (49.9ms) DROP DATABASE IF EXISTS "snf_test" /*application='Dummy'*/
6100
+  (138.5ms) CREATE DATABASE "snf_test" ENCODING = 'unicode' /*application='Dummy'*/
6101
+ SQL (17.1ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" SCHEMA pg_catalog /*application='Dummy'*/
6102
+  (0.1ms) DROP TABLE IF EXISTS "active_storage_attachments" CASCADE /*application='Dummy'*/
6103
+  (4.2ms) CREATE TABLE "active_storage_attachments" ("id" bigserial primary key, "name" character varying NOT NULL, "record_type" character varying NOT NULL, "record_id" bigint NOT NULL, "blob_id" bigint NOT NULL, "created_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6104
+  (2.3ms) CREATE INDEX "index_active_storage_attachments_on_blob_id" ON "active_storage_attachments" ("blob_id") /*application='Dummy'*/
6105
+  (4.4ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id") /*application='Dummy'*/
6106
+  (0.2ms) DROP TABLE IF EXISTS "active_storage_blobs" CASCADE /*application='Dummy'*/
6107
+  (2.4ms) CREATE TABLE "active_storage_blobs" ("id" bigserial primary key, "key" character varying NOT NULL, "filename" character varying NOT NULL, "content_type" character varying, "metadata" text, "service_name" character varying NOT NULL, "byte_size" bigint NOT NULL, "checksum" character varying, "created_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6108
+  (0.7ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key") /*application='Dummy'*/
6109
+  (0.1ms) DROP TABLE IF EXISTS "active_storage_variant_records" CASCADE /*application='Dummy'*/
6110
+  (1.8ms) CREATE TABLE "active_storage_variant_records" ("id" bigserial primary key, "blob_id" bigint NOT NULL, "variation_digest" character varying NOT NULL) /*application='Dummy'*/
6111
+  (1.9ms) CREATE UNIQUE INDEX "index_active_storage_variant_records_uniqueness" ON "active_storage_variant_records" ("blob_id", "variation_digest") /*application='Dummy'*/
6112
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_account_transfers" CASCADE /*application='Dummy'*/
6113
+  (2.8ms) CREATE TABLE "snf_core_account_transfers" ("id" bigserial primary key, "source_account_type" character varying NOT NULL, "source_account_id" bigint NOT NULL, "destination_account_type" character varying NOT NULL, "destination_account_id" bigint NOT NULL, "user_id" bigint NOT NULL, "amount" decimal(15,2) NOT NULL, "reference_number" character varying NOT NULL, "status" integer DEFAULT 0 NOT NULL, "transfer_type" integer NOT NULL, "description" text, "failure_reason" text, "completed_at" timestamp(6), "reversal_transfer_id" bigint, "cbs_response_data" jsonb, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6114
+  (0.8ms) CREATE INDEX "index_snf_core_account_transfers_on_destination_account" ON "snf_core_account_transfers" ("destination_account_type", "destination_account_id") /*application='Dummy'*/
6115
+  (0.6ms) CREATE UNIQUE INDEX "index_snf_core_account_transfers_on_reference_number" ON "snf_core_account_transfers" ("reference_number") /*application='Dummy'*/
6116
+  (0.4ms) CREATE INDEX "index_snf_core_account_transfers_on_reversal_transfer_id" ON "snf_core_account_transfers" ("reversal_transfer_id") /*application='Dummy'*/
6117
+  (0.5ms) CREATE INDEX "index_snf_core_account_transfers_on_source_account" ON "snf_core_account_transfers" ("source_account_type", "source_account_id") /*application='Dummy'*/
6118
+  (0.9ms) CREATE INDEX "index_snf_core_account_transfers_on_user_id" ON "snf_core_account_transfers" ("user_id") /*application='Dummy'*/
6119
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_addresses" CASCADE /*application='Dummy'*/
6120
+  (1.9ms) CREATE TABLE "snf_core_addresses" ("id" bigserial primary key, "address_type" character varying NOT NULL, "city" character varying NOT NULL, "sub_city" character varying NOT NULL, "woreda" character varying, "latitude" decimal NOT NULL, "longitude" decimal NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "house_number" character varying) /*application='Dummy'*/
6121
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_business_documents" CASCADE /*application='Dummy'*/
6122
+  (1.4ms) CREATE TABLE "snf_core_business_documents" ("id" bigserial primary key, "business_id" bigint NOT NULL, "document_type" integer NOT NULL, "verified_at" timestamp(6), "verified_by_id" bigint, "uploaded_at" timestamp(6), "is_verified" boolean DEFAULT FALSE NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6123
+  (0.8ms) CREATE INDEX "index_snf_core_business_documents_on_business_id" ON "snf_core_business_documents" ("business_id") /*application='Dummy'*/
6124
+  (0.7ms) CREATE INDEX "index_snf_core_business_documents_on_verified_by_id" ON "snf_core_business_documents" ("verified_by_id") /*application='Dummy'*/
6125
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_businesses" CASCADE /*application='Dummy'*/
6126
+  (2.0ms) CREATE TABLE "snf_core_businesses" ("id" bigserial primary key, "user_id" bigint NOT NULL, "business_name" character varying NOT NULL, "tin_number" character varying NOT NULL, "business_type" integer NOT NULL, "verified_at" timestamp(6), "verification_status" integer DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6127
+  (1.0ms) CREATE INDEX "index_snf_core_businesses_on_user_id" ON "snf_core_businesses" ("user_id") /*application='Dummy'*/
6128
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_categories" CASCADE /*application='Dummy'*/
6129
+  (1.8ms) CREATE TABLE "snf_core_categories" ("id" bigserial primary key, "name" character varying NOT NULL, "description" character varying, "parent_id" bigint, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6130
+  (0.8ms) CREATE INDEX "index_snf_core_categories_on_parent_id" ON "snf_core_categories" ("parent_id") /*application='Dummy'*/
6131
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_customer_groups" CASCADE /*application='Dummy'*/
6132
+  (1.6ms) CREATE TABLE "snf_core_customer_groups" ("id" bigserial primary key, "discount_code" character varying, "expire_date" timestamp(6), "is_used" boolean, "group_id" bigint NOT NULL, "customer_id" bigint NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6133
+  (0.7ms) CREATE INDEX "index_snf_core_customer_groups_on_customer_id" ON "snf_core_customer_groups" ("customer_id") /*application='Dummy'*/
6134
+  (0.6ms) CREATE INDEX "index_snf_core_customer_groups_on_group_id" ON "snf_core_customer_groups" ("group_id") /*application='Dummy'*/
6135
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_delivery_orders" CASCADE /*application='Dummy'*/
6136
+  (1.9ms) CREATE TABLE "snf_core_delivery_orders" ("id" bigserial primary key, "order_id" bigint NOT NULL, "delivery_address" character varying NOT NULL, "contact_phone" character varying NOT NULL, "delivery_notes" text NOT NULL, "estimated_delivery_time" timestamp(6) NOT NULL, "actual_delivery_time" timestamp(6), "status" integer NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6137
+  (0.6ms) CREATE INDEX "index_snf_core_delivery_orders_on_order_id" ON "snf_core_delivery_orders" ("order_id") /*application='Dummy'*/
6138
+  (0.4ms) DROP TABLE IF EXISTS "snf_core_groups" CASCADE /*application='Dummy'*/
6139
+  (2.5ms) CREATE TABLE "snf_core_groups" ("id" bigserial primary key, "name" character varying NOT NULL, "business_id" bigint NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6140
+  (0.8ms) CREATE INDEX "index_snf_core_groups_on_business_id" ON "snf_core_groups" ("business_id") /*application='Dummy'*/
6141
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_item_requests" CASCADE /*application='Dummy'*/
6142
+  (2.6ms) CREATE TABLE "snf_core_item_requests" ("id" bigserial primary key, "user_id" bigint NOT NULL, "product_id" bigint NOT NULL, "quantity" integer NOT NULL, "requested_delivery_date" date NOT NULL, "notes" text, "status" integer DEFAULT 0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6143
+  (1.1ms) CREATE INDEX "index_snf_core_item_requests_on_product_id" ON "snf_core_item_requests" ("product_id") /*application='Dummy'*/
6144
+  (0.8ms) CREATE INDEX "index_snf_core_item_requests_on_user_id" ON "snf_core_item_requests" ("user_id") /*application='Dummy'*/
6145
+  (0.3ms) DROP TABLE IF EXISTS "snf_core_order_items" CASCADE /*application='Dummy'*/
6146
+  (2.9ms) CREATE TABLE "snf_core_order_items" ("id" bigserial primary key, "order_id" bigint NOT NULL, "store_inventory_id" bigint NOT NULL, "quantity" integer NOT NULL, "unit_price" decimal NOT NULL, "subtotal" decimal NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6147
+  (1.1ms) CREATE INDEX "index_snf_core_order_items_on_order_id" ON "snf_core_order_items" ("order_id") /*application='Dummy'*/
6148
+  (1.1ms) CREATE INDEX "index_snf_core_order_items_on_store_inventory_id" ON "snf_core_order_items" ("store_inventory_id") /*application='Dummy'*/
6149
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_orders" CASCADE /*application='Dummy'*/
6150
+  (1.8ms) CREATE TABLE "snf_core_orders" ("id" bigserial primary key, "user_id" bigint NOT NULL, "store_id" bigint NOT NULL, "status" integer DEFAULT 1 NOT NULL, "total_amount" decimal DEFAULT 0.0 NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6151
+  (0.7ms) CREATE INDEX "index_snf_core_orders_on_store_id" ON "snf_core_orders" ("store_id") /*application='Dummy'*/
6152
+  (1.1ms) CREATE INDEX "index_snf_core_orders_on_user_id" ON "snf_core_orders" ("user_id") /*application='Dummy'*/
6153
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_products" CASCADE /*application='Dummy'*/
6154
+  (2.4ms) CREATE TABLE "snf_core_products" ("id" bigserial primary key, "sku" character varying NOT NULL, "name" character varying NOT NULL, "description" character varying, "category_id" bigint NOT NULL, "base_price" float, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6155
+  (1.1ms) CREATE INDEX "index_snf_core_products_on_category_id" ON "snf_core_products" ("category_id") /*application='Dummy'*/
6156
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_quotations" CASCADE /*application='Dummy'*/
6157
+  (2.4ms) CREATE TABLE "snf_core_quotations" ("id" bigserial primary key, "item_request_id" bigint NOT NULL, "price" decimal NOT NULL, "delivery_date" date NOT NULL, "valid_until" timestamp(6) NOT NULL, "status" integer DEFAULT 0 NOT NULL, "notes" text, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6158
+  (1.1ms) CREATE INDEX "index_snf_core_quotations_on_item_request_id" ON "snf_core_quotations" ("item_request_id") /*application='Dummy'*/
6159
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_roles" CASCADE /*application='Dummy'*/
6160
+  (3.0ms) CREATE TABLE "snf_core_roles" ("id" bigserial primary key, "name" character varying NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6161
+  (0.3ms) DROP TABLE IF EXISTS "snf_core_store_inventories" CASCADE /*application='Dummy'*/
6162
+  (1.8ms) CREATE TABLE "snf_core_store_inventories" ("id" bigserial primary key, "store_id" bigint NOT NULL, "product_id" bigint NOT NULL, "base_price" decimal(10,2) NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "status" integer DEFAULT 0 NOT NULL) /*application='Dummy'*/
6163
+  (0.9ms) CREATE INDEX "index_snf_core_store_inventories_on_product_id" ON "snf_core_store_inventories" ("product_id") /*application='Dummy'*/
6164
+  (1.0ms) CREATE UNIQUE INDEX "index_snf_core_store_inventories_on_store_id_and_product_id" ON "snf_core_store_inventories" ("store_id", "product_id") /*application='Dummy'*/
6165
+  (0.8ms) CREATE INDEX "index_snf_core_store_inventories_on_store_id" ON "snf_core_store_inventories" ("store_id") /*application='Dummy'*/
6166
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_stores" CASCADE /*application='Dummy'*/
6167
+  (3.4ms) CREATE TABLE "snf_core_stores" ("id" bigserial primary key, "name" character varying NOT NULL, "email" character varying, "operational_status" integer DEFAULT 1 NOT NULL, "business_id" bigint NOT NULL, "address_id" bigint NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6168
+  (1.0ms) CREATE INDEX "index_snf_core_stores_on_address_id" ON "snf_core_stores" ("address_id") /*application='Dummy'*/
6169
+  (1.0ms) CREATE INDEX "index_snf_core_stores_on_business_id" ON "snf_core_stores" ("business_id") /*application='Dummy'*/
6170
+  (0.1ms) DROP TABLE IF EXISTS "snf_core_user_roles" CASCADE /*application='Dummy'*/
6171
+  (16.6ms) CREATE TABLE "snf_core_user_roles" ("id" bigserial primary key, "user_id" bigint NOT NULL, "role_id" bigint NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6172
+  (1.5ms) CREATE INDEX "index_snf_core_user_roles_on_role_id" ON "snf_core_user_roles" ("role_id") /*application='Dummy'*/
6173
+  (8.6ms) CREATE INDEX "index_snf_core_user_roles_on_user_id" ON "snf_core_user_roles" ("user_id") /*application='Dummy'*/
6174
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_users" CASCADE /*application='Dummy'*/
6175
+  (4.3ms) CREATE TABLE "snf_core_users" ("id" bigserial primary key, "first_name" character varying NOT NULL, "middle_name" character varying NOT NULL, "last_name" character varying NOT NULL, "email" character varying, "phone_number" character varying NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL, "password_digest" character varying NOT NULL, "password_changed" boolean DEFAULT FALSE, "reset_password_token" character varying, "date_of_birth" date NOT NULL, "nationality" character varying NOT NULL, "occupation" character varying, "source_of_funds" character varying, "kyc_status" integer, "gender" integer, "verified_at" timestamp(6), "verified_by_id" bigint, "address_id" bigint) /*application='Dummy'*/
6176
+  (0.5ms) DROP TABLE IF EXISTS "snf_core_virtual_account_transactions" CASCADE /*application='Dummy'*/
6177
+  (3.9ms) CREATE TABLE "snf_core_virtual_account_transactions" ("id" bigserial primary key, "from_account_id" bigint, "to_account_id" bigint, "amount" decimal NOT NULL, "transaction_type" integer NOT NULL, "status" integer DEFAULT 0 NOT NULL, "reference_number" character varying NOT NULL, "description" text, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6178
+  (1.7ms) CREATE INDEX "index_snf_core_virtual_account_transactions_on_created_at" ON "snf_core_virtual_account_transactions" ("created_at") /*application='Dummy'*/
6179
+  (1.8ms) CREATE INDEX "index_snf_core_virtual_account_transactions_on_from_account_id" ON "snf_core_virtual_account_transactions" ("from_account_id") /*application='Dummy'*/
6180
+  (1.3ms) CREATE UNIQUE INDEX "idx_on_reference_number_bd9be00f20" ON "snf_core_virtual_account_transactions" ("reference_number") /*application='Dummy'*/
6181
+  (1.4ms) CREATE INDEX "index_snf_core_virtual_account_transactions_on_to_account_id" ON "snf_core_virtual_account_transactions" ("to_account_id") /*application='Dummy'*/
6182
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_virtual_accounts" CASCADE /*application='Dummy'*/
6183
+  (5.2ms) CREATE TABLE "snf_core_virtual_accounts" ("id" bigserial primary key, "user_id" bigint NOT NULL, "account_number" character varying(11) NOT NULL, "cbs_account_number" character varying NOT NULL, "balance" decimal DEFAULT 0.0 NOT NULL, "interest_rate" decimal DEFAULT 0.0 NOT NULL, "interest_type" integer DEFAULT 0 NOT NULL, "active" boolean DEFAULT TRUE NOT NULL, "branch_code" character varying(3) NOT NULL, "product_scheme" character varying(1) NOT NULL, "voucher_type" character varying(1) NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6184
+  (1.6ms) CREATE UNIQUE INDEX "index_snf_core_virtual_accounts_on_account_number" ON "snf_core_virtual_accounts" ("account_number") /*application='Dummy'*/
6185
+  (1.8ms) CREATE INDEX "idx_on_branch_code_product_scheme_voucher_type_b7038b3d5f" ON "snf_core_virtual_accounts" ("branch_code", "product_scheme", "voucher_type") /*application='Dummy'*/
6186
+  (1.6ms) CREATE UNIQUE INDEX "index_snf_core_virtual_accounts_on_cbs_account_number" ON "snf_core_virtual_accounts" ("cbs_account_number") /*application='Dummy'*/
6187
+  (1.5ms) CREATE INDEX "index_snf_core_virtual_accounts_on_user_id" ON "snf_core_virtual_accounts" ("user_id") /*application='Dummy'*/
6188
+  (0.2ms) DROP TABLE IF EXISTS "snf_core_wallets" CASCADE /*application='Dummy'*/
6189
+  (5.4ms) CREATE TABLE "snf_core_wallets" ("id" bigserial primary key, "user_id" bigint NOT NULL, "wallet_number" character varying NOT NULL, "balance" decimal NOT NULL, "is_active" boolean DEFAULT TRUE NOT NULL, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6190
+  (2.0ms) CREATE INDEX "index_snf_core_wallets_on_user_id" ON "snf_core_wallets" ("user_id") /*application='Dummy'*/
6191
+  (1.3ms) CREATE UNIQUE INDEX "index_snf_core_wallets_on_wallet_number" ON "snf_core_wallets" ("wallet_number") /*application='Dummy'*/
6192
+  (3.9ms) ALTER TABLE "active_storage_attachments" ADD CONSTRAINT "fk_rails_c3b3935057"
6193
+ FOREIGN KEY ("blob_id")
6194
+ REFERENCES "active_storage_blobs" ("id")
6195
+ /*application='Dummy'*/
6196
+  (2.1ms) ALTER TABLE "active_storage_variant_records" ADD CONSTRAINT "fk_rails_993965df05"
6197
+ FOREIGN KEY ("blob_id")
6198
+ REFERENCES "active_storage_blobs" ("id")
6199
+ /*application='Dummy'*/
6200
+  (2.4ms) ALTER TABLE "snf_core_account_transfers" ADD CONSTRAINT "fk_rails_0d109a55ef"
6201
+ FOREIGN KEY ("user_id")
6202
+ REFERENCES "snf_core_users" ("id")
6203
+ /*application='Dummy'*/
6204
+  (2.1ms) ALTER TABLE "snf_core_business_documents" ADD CONSTRAINT "fk_rails_1efd7338ed"
6205
+ FOREIGN KEY ("business_id")
6206
+ REFERENCES "snf_core_businesses" ("id")
6207
+ /*application='Dummy'*/
6208
+  (1.8ms) ALTER TABLE "snf_core_business_documents" ADD CONSTRAINT "fk_rails_a6157021cc"
6209
+ FOREIGN KEY ("verified_by_id")
6210
+ REFERENCES "snf_core_users" ("id")
6211
+ /*application='Dummy'*/
6212
+  (2.0ms) ALTER TABLE "snf_core_businesses" ADD CONSTRAINT "fk_rails_a61edcbd4b"
6213
+ FOREIGN KEY ("user_id")
6214
+ REFERENCES "snf_core_users" ("id")
6215
+ /*application='Dummy'*/
6216
+  (1.9ms) ALTER TABLE "snf_core_categories" ADD CONSTRAINT "fk_rails_26a925b05d"
6217
+ FOREIGN KEY ("parent_id")
6218
+ REFERENCES "snf_core_categories" ("id")
6219
+ /*application='Dummy'*/
6220
+  (2.5ms) ALTER TABLE "snf_core_customer_groups" ADD CONSTRAINT "fk_rails_9c45f4015a"
6221
+ FOREIGN KEY ("group_id")
6222
+ REFERENCES "snf_core_groups" ("id")
6223
+ /*application='Dummy'*/
6224
+  (1.6ms) ALTER TABLE "snf_core_customer_groups" ADD CONSTRAINT "fk_rails_792eb3404d"
6225
+ FOREIGN KEY ("customer_id")
6226
+ REFERENCES "snf_core_users" ("id")
6227
+ /*application='Dummy'*/
6228
+  (2.4ms) ALTER TABLE "snf_core_delivery_orders" ADD CONSTRAINT "fk_rails_450d17b1b2"
6229
+ FOREIGN KEY ("order_id")
6230
+ REFERENCES "snf_core_orders" ("id")
6231
+ /*application='Dummy'*/
6232
+  (1.9ms) ALTER TABLE "snf_core_groups" ADD CONSTRAINT "fk_rails_c52b27ad67"
6233
+ FOREIGN KEY ("business_id")
6234
+ REFERENCES "snf_core_businesses" ("id")
6235
+ /*application='Dummy'*/
6236
+  (2.3ms) ALTER TABLE "snf_core_item_requests" ADD CONSTRAINT "fk_rails_a718316b94"
6237
+ FOREIGN KEY ("product_id")
6238
+ REFERENCES "snf_core_products" ("id")
6239
+ /*application='Dummy'*/
6240
+  (3.3ms) ALTER TABLE "snf_core_item_requests" ADD CONSTRAINT "fk_rails_0aa2ea2057"
6241
+ FOREIGN KEY ("user_id")
6242
+ REFERENCES "snf_core_users" ("id")
6243
+ /*application='Dummy'*/
6244
+  (3.0ms) ALTER TABLE "snf_core_order_items" ADD CONSTRAINT "fk_rails_1f4046ba92"
6245
+ FOREIGN KEY ("order_id")
6246
+ REFERENCES "snf_core_orders" ("id")
6247
+ /*application='Dummy'*/
6248
+  (2.6ms) ALTER TABLE "snf_core_order_items" ADD CONSTRAINT "fk_rails_50419437e9"
6249
+ FOREIGN KEY ("store_inventory_id")
6250
+ REFERENCES "snf_core_store_inventories" ("id")
6251
+ /*application='Dummy'*/
6252
+  (1.7ms) ALTER TABLE "snf_core_orders" ADD CONSTRAINT "fk_rails_400cf2029c"
6253
+ FOREIGN KEY ("store_id")
6254
+ REFERENCES "snf_core_stores" ("id")
6255
+ /*application='Dummy'*/
6256
+  (1.2ms) ALTER TABLE "snf_core_orders" ADD CONSTRAINT "fk_rails_45b78fb6f9"
6257
+ FOREIGN KEY ("user_id")
6258
+ REFERENCES "snf_core_users" ("id")
6259
+ /*application='Dummy'*/
6260
+  (1.2ms) ALTER TABLE "snf_core_products" ADD CONSTRAINT "fk_rails_a0ba3fa883"
6261
+ FOREIGN KEY ("category_id")
6262
+ REFERENCES "snf_core_categories" ("id")
6263
+ /*application='Dummy'*/
6264
+  (1.3ms) ALTER TABLE "snf_core_quotations" ADD CONSTRAINT "fk_rails_3ec8abd328"
6265
+ FOREIGN KEY ("item_request_id")
6266
+ REFERENCES "snf_core_item_requests" ("id")
6267
+ /*application='Dummy'*/
6268
+  (1.2ms) ALTER TABLE "snf_core_store_inventories" ADD CONSTRAINT "fk_rails_15fb263e75"
6269
+ FOREIGN KEY ("product_id")
6270
+ REFERENCES "snf_core_products" ("id")
6271
+ /*application='Dummy'*/
6272
+  (1.7ms) ALTER TABLE "snf_core_store_inventories" ADD CONSTRAINT "fk_rails_2ca88d30e2"
6273
+ FOREIGN KEY ("store_id")
6274
+ REFERENCES "snf_core_stores" ("id")
6275
+ /*application='Dummy'*/
6276
+  (1.2ms) ALTER TABLE "snf_core_stores" ADD CONSTRAINT "fk_rails_421441da8e"
6277
+ FOREIGN KEY ("address_id")
6278
+ REFERENCES "snf_core_addresses" ("id")
6279
+ /*application='Dummy'*/
6280
+  (1.9ms) ALTER TABLE "snf_core_stores" ADD CONSTRAINT "fk_rails_e100fc7454"
6281
+ FOREIGN KEY ("business_id")
6282
+ REFERENCES "snf_core_businesses" ("id")
6283
+ /*application='Dummy'*/
6284
+  (2.3ms) ALTER TABLE "snf_core_user_roles" ADD CONSTRAINT "fk_rails_0e70d7ce00"
6285
+ FOREIGN KEY ("role_id")
6286
+ REFERENCES "snf_core_roles" ("id")
6287
+ /*application='Dummy'*/
6288
+  (1.4ms) ALTER TABLE "snf_core_user_roles" ADD CONSTRAINT "fk_rails_9ad2e78133"
6289
+ FOREIGN KEY ("user_id")
6290
+ REFERENCES "snf_core_users" ("id")
6291
+ /*application='Dummy'*/
6292
+  (1.4ms) ALTER TABLE "snf_core_users" ADD CONSTRAINT "fk_rails_aaf9dcb5a5"
6293
+ FOREIGN KEY ("address_id")
6294
+ REFERENCES "snf_core_addresses" ("id")
6295
+ /*application='Dummy'*/
6296
+  (1.3ms) ALTER TABLE "snf_core_users" ADD CONSTRAINT "fk_rails_e672dea3f8"
6297
+ FOREIGN KEY ("verified_by_id")
6298
+ REFERENCES "snf_core_users" ("id")
6299
+ ON DELETE SET NULL /*application='Dummy'*/
6300
+  (2.4ms) ALTER TABLE "snf_core_virtual_account_transactions" ADD CONSTRAINT "fk_rails_746fa19f46"
6301
+ FOREIGN KEY ("from_account_id")
6302
+ REFERENCES "snf_core_virtual_accounts" ("id")
6303
+ /*application='Dummy'*/
6304
+  (1.4ms) ALTER TABLE "snf_core_virtual_account_transactions" ADD CONSTRAINT "fk_rails_87430c1b60"
6305
+ FOREIGN KEY ("to_account_id")
6306
+ REFERENCES "snf_core_virtual_accounts" ("id")
6307
+ /*application='Dummy'*/
6308
+  (1.0ms) ALTER TABLE "snf_core_virtual_accounts" ADD CONSTRAINT "fk_rails_5b22a265fb"
6309
+ FOREIGN KEY ("user_id")
6310
+ REFERENCES "snf_core_users" ("id")
6311
+ /*application='Dummy'*/
6312
+  (1.3ms) ALTER TABLE "snf_core_wallets" ADD CONSTRAINT "fk_rails_77c94979ce"
6313
+ FOREIGN KEY ("user_id")
6314
+ REFERENCES "snf_core_users" ("id")
6315
+ /*application='Dummy'*/
6316
+  (4.6ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY) /*application='Dummy'*/
6317
+ ActiveRecord::SchemaMigration Load (0.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC /*application='Dummy'*/
6318
+  (0.6ms) INSERT INTO "schema_migrations" (version) VALUES (20250312043359) /*application='Dummy'*/
6319
+  (0.4ms) INSERT INTO "schema_migrations" (version) VALUES
6320
+ (20250311000000),
6321
+ (20250310143604),
6322
+ (20250310133249),
6323
+ (20250310123127),
6324
+ (20250310122954),
6325
+ (20250306074713),
6326
+ (20250305232530),
6327
+ (20250305232529),
6328
+ (20250305201008),
6329
+ (20250305170248),
6330
+ (20250305165926),
6331
+ (20250227102833),
6332
+ (20250227075048),
6333
+ (20250226193938),
6334
+ (20250226192104),
6335
+ (20250226190000),
6336
+ (20250226181007),
6337
+ (20250226123213),
6338
+ (20250226115215),
6339
+ (20250226110217),
6340
+ (20250226102931),
6341
+ (20250226080323),
6342
+ (20250226064444),
6343
+ (20250226042622); /*application='Dummy'*/
6344
+  (7.1ms) CREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp(6) NOT NULL, "updated_at" timestamp(6) NOT NULL) /*application='Dummy'*/
6345
+ ActiveRecord::InternalMetadata Load (1.1ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'environment' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6346
+ ActiveRecord::InternalMetadata Create (0.8ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ('environment', 'development', '2025-03-12 09:28:39.058731', '2025-03-12 09:28:39.058738') RETURNING "key" /*application='Dummy'*/
6347
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'environment' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6348
+ ActiveRecord::InternalMetadata Update (0.5ms) UPDATE "ar_internal_metadata" SET "value" = 'test', "updated_at" = '2025-03-12 09:28:39.063516' WHERE "ar_internal_metadata"."key" = 'environment' /*application='Dummy'*/
6349
+ ActiveRecord::InternalMetadata Load (0.2ms) SELECT * FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = 'schema_sha1' ORDER BY "ar_internal_metadata"."key" ASC LIMIT 1 /*application='Dummy'*/
6350
+ ActiveRecord::InternalMetadata Create (0.4ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ('schema_sha1', 'ce684782ac0a2f19cbccaf01724c2ba2ab15f8bc', '2025-03-12 09:28:39.066619', '2025-03-12 09:28:39.066622') RETURNING "key" /*application='Dummy'*/