1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
-- Add payment categories with accents from payment with accents
INSERT INTO
payment_category (name, category, created_at)
SELECT
DISTINCT lower(payment.name), payment_category.category, datetime('now')
FROM
payment
INNER JOIN
payment_category
ON
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(lower(payment.name), 'é', 'e'), 'è', 'e'), 'à', 'a'), 'û', 'u'), 'â', 'a'), 'ê', 'e'), 'â', 'a'), 'î', 'i'), 'ï', 'i'), 'ô', 'o'), 'ë', 'e') = payment_category.name
WHERE
payment.name
IN
(SELECT DISTINCT payment.name FROM payment WHERE lower(payment.name) NOT IN (SELECT payment_category.name FROM payment_category) AND payment.deleted_at IS NULL);
-- Remove unused payment categories
DELETE FROM
payment_category
WHERE
name NOT IN (SELECT DISTINCT lower(name) FROM payment);
-- Add category id to payment table
PRAGMA foreign_keys = 0;
ALTER TABLE payment ADD COLUMN "category" INTEGER NOT NULL REFERENCES "category" DEFAULT -1;
PRAGMA foreign_keys = 1;
UPDATE
payment
SET
category = (SELECT category FROM payment_category WHERE payment_category.name = LOWER(payment.name))
WHERE
EXISTS (SELECT category FROM payment_category WHERE payment_category.name = LOWER(payment.name));
DELETE FROM payment WHERE category = -1;
-- Remove
DROP TABLE payment_category;
|