Commit Graph

462 Commits

Author SHA1 Message Date
Luis Ramos
14fd9a121e Make versions.custom_data text so it can take longer lists 2020-03-27 11:34:01 +00:00
Luis Ramos
02008769e9 Make spree_payment.cvv_response_message without size limit so that long stripe redirect URLs can be stored there 2020-03-02 17:31:01 +00:00
Luis Ramos
2412658e51 Update db/schema timestamp according to last change 2020-02-20 11:41:49 +00:00
luisramos0
abd4f0b923 Add custom_data column to paper_trail versions table so we can track a specific list of ids in a model
Activate paper_trail in order_cycles and schedules and track each others ids

An alternative way of doing this would be to use a gem for paper_trail associations but this way we avoid adding a new dependency to the app
2020-02-07 10:06:58 +00:00
Matt-Yorkley
9e1b2eb4ca Fix migration mismatch
It looks like this was probably changed whilst resolving a merge conflict somewhere. The number doesn't match the last migration file, and it's breaking the ofn-install CI build (as well as migrations on fresh servers).
2019-11-05 22:58:14 +00:00
luisramos0
a6cb5903d6 Delete prototypes tables and all references in pages 2019-10-31 13:23:42 +00:00
Matt-Yorkley
34466c8218 Add order_cycle_id and distributor_id indexes to spree_orders table 2019-10-23 18:29:34 +01:00
Luis Ramos
1ab9e9d7a5 Merge pull request #4299 from luisramos0/drop_order_ship_method_id
Remove unused field orders.shipping_method_id
2019-10-13 19:54:13 +01:00
Dan Ingenthron
dbf34da87b Rubocop fixes 2019-10-08 18:37:16 -05:00
Dan Ingenthron
e2d341c9c2 Add default category to seeds 2019-10-08 18:37:15 -05:00
luisramos0
a2bc61cb4d Remove unused field orders.shipping_method_id 2019-10-08 09:09:19 +01:00
luisramos0
f2b57057cd Add migration to delete all master variants from exchanges and replace them with standard variants 2019-10-07 14:53:44 +01:00
Kristina Lim
3535c4d564 Merge pull request #4240 from Matt-Yorkley/backorder_to_the_future_2
Disentangle on_demand and backordered
2019-09-20 00:05:27 +08:00
Pau Perez
ea41405209 Index spree_orders on various columns
The following query

```sql
SELECT spree_orders . *
FROM spree_orders
WHERE spree_orders . user_id = ?
AND spree_orders . completed_at IS ?
AND spree_orders . created_by_id = ?
ORDER BY created_at DESC LIMIT ?
```

performs quite badly even though LIMIT is always 1 because:

* ORDER BY requires sorting by a column which is not indexed therefore
a sequential scan is performed.
* Although `completed_at` is indexed, `user_id` and `created_by_id` are
not causing a sequential scan.

To make it worse this query is executed very often in the following
controllers among others also related to checkout:

* CartController#populate
* EnterprisesController#Shop
* LineItemsController#bought
* ShopController#products
* ShopController#order_cycle

In some cases this query alone accounts for 66.8% of the total time
of the endpoint.

Results

See by yourself. We move from 56.643ms to 0.077ms. Pretty neat.

```
openfoodnetwork=> explain analyze SELECT "spree_orders".* FROM "spree_orders" WHERE "spree_orders"."user_id" = 1 AND "spree_orders"."completed_at" IS NULL AND "spree_orders"."created_by_id" = 1 ORDER BY created_at DESC LIMIT 1;
                                                        QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=11753.03..11753.04 rows=1 width=195) (actual time=56.580..56.580 rows=0 loops=1)
   ->  Sort  (cost=11753.03..11753.04 rows=1 width=195) (actual time=56.578..56.578 rows=0 loops=1)
         Sort Key: created_at DESC
         Sort Method: quicksort  Memory: 25kB
         ->  Seq Scan on spree_orders  (cost=0.00..11753.02 rows=1 width=195) (actual time=56.571..56.571 rows=0 loops=1)
               Filter: ((completed_at IS NULL) AND (user_id = 1) AND (created_by_id = 1))
               Rows Removed by Filter: 256135
 Planning time: 0.252 ms
 Execution time: 56.643 ms
(9 rows)

openfoodnetwork=> CREATE INDEX ON spree_orders (completed_at, user_id, created_by_id, created_at);
CREATE INDEX
openfoodnetwork=> explain analyze SELECT "spree_orders".* FROM "spree_orders" WHERE "spree_orders"."user_id" = 1 AND "spree_orders"."completed_at" IS NULL AND "spree_orders"."created_by_id" = 1 ORDER BY created_at DESC LIMIT 1;
mit  (cost=8.45..8.46 rows=1 width=195) (actual time=0.030..0.030 rows=0 loops=1)
   ->  Sort  (cost=8.45..8.46 rows=1 width=195) (actual time=0.029..0.029 rows=0 loops=1)
         Sort Key: created_at DESC
         Sort Method: quicksort  Memory: 25kB
         ->  Index Scan using spree_orders_completed_at_user_id_created_by_id_created_at_idx on spree_orders  (cost=0.42..8.44 rows=1 width=195) (actual time=0.021..0.021 rows=0 loops=1)
               Index Cond: ((completed_at IS NULL) AND (user_id = 1) AND (created_by_id = 1))
 Planning time: 0.199 ms
 Execution time: 0.077 ms
```
2019-09-17 17:02:14 +02:00
luisramos0
2683efdd3c Add missing update to db/schema by running db:migrate
This was missed in PR 4242
2019-09-17 15:27:56 +01:00
Matt-Yorkley
a3efd13d46 Update existing Spree::InventoryItem records: change backordered state to on_hand. 2019-09-13 13:05:15 +01:00
Matt-Yorkley
2ff0169016 Replace hard-deleted prices with empty (0.00) price records 2019-09-13 12:55:24 +01:00
Matt-Yorkley
64a501ee20 Don't index new deleted_at column for spree_prices 2019-09-11 04:29:02 +01:00
Matt-Yorkley
95fcff8bb1 Add migration to remove broken variants from open carts 2019-09-11 04:29:00 +01:00
Matt-Yorkley
11ea852211 Add migration to reset negative stock levels to zero 2019-09-09 17:49:58 +01:00
Matt-Yorkley
f413ce2a27 Soft-delete price objects 2019-09-06 17:50:19 +01:00
Matt-Yorkley
fc9f61ecf8 Revert PR #4204
Temporarily reverting these changes for a quick release
2019-09-05 13:23:59 +01:00
Matt-Yorkley
50a1704994 Make prices soft-deletable 2019-08-30 20:11:32 +01:00
Maikel
ca09c58f26 Merge pull request #3985 from jonleighton/string-to-text
Convert several fields from string to text
2019-08-28 11:53:49 +10:00
Matt-Yorkley
9dd02044a5 Fix "can't modify frozen string" error in validation callbacks 2019-08-14 10:24:30 +01:00
Matt-Yorkley
d8a7190f43 Adjust user creation syntax
#skip_confirmation! can't be chained...
2019-08-14 09:22:11 +01:00
Matt-Yorkley
8c95399292 Don't prompt if admin user already exists 2019-08-13 21:02:12 +01:00
Matt-Yorkley
14c1abb861 Skip confirmation email on initial admin user creation 2019-08-13 21:00:30 +01:00
Maikel Linke
cbaedcec92 Fix seeding of default user without asking 2019-08-13 09:47:54 +10:00
Maikel Linke
e4ba515109 Seed admin user without asking by default 2019-08-09 14:16:01 +10:00
Maikel Linke
af1f6f6c6d Skip confirmation when creating first admin user 2019-08-09 14:16:01 +10:00
Maikel Linke
b0e8ee42c1 Restore spree_auth_devise user seeding 2019-08-09 13:48:50 +10:00
luisramos0
6d7c41c04b Bring db/default/users from spree_auth_devise, this is necessary to create the first user in the DB 2019-07-20 20:48:49 +01:00
Jon Leighton
4398ea12b8 Convert several fields from string to text
See discussion here:
https://github.com/openfoodfoundation/openfoodnetwork/pull/3751#issuecomment-503416955

Fixes #3192.

I have also done a pass over the schema to identify other fields which
would benefit from being a text rather than a string. However, I ignored
all `spree_*` tables because I didn’t want to mess up the ‘default’
Spree schema.
2019-07-09 13:11:30 +10:00
Matt-Yorkley
24f8e6d2ec Fix failing migration by clearing schema cache 2019-07-03 12:59:10 +01:00
luisramos0
ffbd79d3dd Change all model scopes without a callable object to use a proc 2019-05-28 15:55:13 +01:00
luisramos0
189865fd80 Make stock locations backorderable_default false.
This is required because when the default stock location is created, the backorderable_default column doesnt exist and when this column is created, the initial default is true. This is why we need to force it to false here. This column is the default value for on_demand which must be false.
2019-05-10 22:00:24 +01:00
Michael Hughes
9e56198092 references to payment_enterprise_id removed, new migration created 2019-05-04 16:32:48 +01:00
luisramos0
42d1d3eff6 Migrate spree_variants.on_demand to spree_stock_items.backorderable 2019-05-02 10:59:27 +01:00
Luis Ramos
449e58723d Merge pull request #3591 from luisramos0/2-0-fix-migrations
[Spree Upgrade] Fix Migrations to 2.0
2019-04-09 13:16:34 +01:00
luisramos0
112a57d330 Remove association between adjustments and shipments that are going to be deleted in AddUniquenessOfOrderIdToSpreeShipments 2019-04-02 12:31:39 +01:00
Kristina Lim
3035d14369 Use bang version of create! in DB migration script 2019-04-02 15:21:58 +08:00
luisramos0
3742c70910 Add backup process to AddUniquenessOfOrderIdToSpreeShipments so that the deleted duplicated shipments can be recovered if something goes wrong 2019-03-28 18:49:38 +00:00
Maikel
74aea76c4c Merge pull request #3609 from luisramos0/2-0-delete-acct-invoices-last-bit
[Spree Upgrade] Finish up deleting account invoices
2019-03-28 13:42:01 +11:00
luisramos0
c1d14686a6 Merge branch 'master' into 2-0-stable-Mar22 2019-03-22 10:55:17 +00:00
Luis Ramos
8d2d5a8708 Merge pull request #3579 from luisramos0/sanitize_data
Add sanitize and truncate data tasks
2019-03-22 10:29:57 +00:00
luisramos0
804375d1aa Delete obsolete pending delayed jobs related to the deleted account invoices feature 2019-03-20 11:24:57 +00:00
luisramos0
78d7222364 Drop account invoices and billable periods tables, the feature has been deleted 2019-03-20 11:19:48 +00:00
luisramos0
8965dedfd7 Add sanitize and truncate tasks to support loading live data into other environments safely 2019-03-13 16:08:07 +00:00
luisramos0
0bfeabbb3e Add migration to create default shipping category and set it in shipping methods and products that do not have a shipping category yet
This is a modified version of this spree migration: af16cf1d74
2019-03-13 15:36:21 +00:00