Add category level and turn the reticle into a background watermark
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import { MigrateUpArgs, MigrateDownArgs, sql } from '@payloadcms/db-sqlite'
|
||||
|
||||
/**
|
||||
* Kategorie se z pevného výběru stávají vlastní kolekcí.
|
||||
*
|
||||
* Psáno ručně, protože generátor se u přechodu `kategorie` (text) →
|
||||
* `kategorie_id` (vazba) interaktivně ptá, jestli jde o přejmenování sloupce,
|
||||
* nebo o nový. Jde o nový — a starý se převede na vazbu, ať položky nepřijdou
|
||||
* o zařazení.
|
||||
*/
|
||||
export async function up({ db }: MigrateUpArgs): Promise<void> {
|
||||
await db.run(sql`CREATE TABLE \`categories\` (
|
||||
\`id\` integer PRIMARY KEY NOT NULL,
|
||||
\`nazev\` text NOT NULL,
|
||||
\`slug\` text,
|
||||
\`poradi\` numeric DEFAULT 0,
|
||||
\`obrazek_id\` integer,
|
||||
\`popis\` text,
|
||||
\`updated_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL,
|
||||
\`created_at\` text DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) NOT NULL,
|
||||
FOREIGN KEY (\`obrazek_id\`) REFERENCES \`media\`(\`id\`) ON UPDATE no action ON DELETE set null
|
||||
);
|
||||
`)
|
||||
await db.run(sql`CREATE UNIQUE INDEX \`categories_slug_idx\` ON \`categories\` (\`slug\`);`)
|
||||
await db.run(sql`CREATE INDEX \`categories_obrazek_idx\` ON \`categories\` (\`obrazek_id\`);`)
|
||||
await db.run(sql`CREATE INDEX \`categories_updated_at_idx\` ON \`categories\` (\`updated_at\`);`)
|
||||
await db.run(sql`CREATE INDEX \`categories_created_at_idx\` ON \`categories\` (\`created_at\`);`)
|
||||
|
||||
// Tři kategorie, které dosud byly natvrdo v kódu. Na prázdné databázi
|
||||
// slouží jako výchozí obsah, na existující jako cíl převodu.
|
||||
await db.run(sql`INSERT INTO \`categories\` (\`nazev\`, \`slug\`, \`poradi\`) VALUES
|
||||
('Zbraně', 'zbrane', 1),
|
||||
('Střelivo', 'strelivo', 2),
|
||||
('Doplňky', 'doplnky', 3);`)
|
||||
|
||||
await db.run(sql`ALTER TABLE \`products\` ADD \`kategorie_id\` integer REFERENCES categories(id);`)
|
||||
await db.run(sql`CREATE INDEX \`products_kategorie_idx\` ON \`products\` (\`kategorie_id\`);`)
|
||||
|
||||
// Převod původní textové hodnoty na vazbu.
|
||||
await db.run(sql`UPDATE \`products\` SET \`kategorie_id\` = (
|
||||
SELECT \`id\` FROM \`categories\` WHERE \`categories\`.\`slug\` = \`products\`.\`kategorie\`
|
||||
);`)
|
||||
|
||||
await db.run(sql`ALTER TABLE \`products\` DROP COLUMN \`kategorie\`;`)
|
||||
|
||||
// Payload si sem ukládá zámky rozepsaných dokumentů; bez sloupce by
|
||||
// administrace u kategorií hlásila chybu.
|
||||
await db.run(
|
||||
sql`ALTER TABLE \`payload_locked_documents_rels\` ADD \`categories_id\` integer REFERENCES categories(id);`,
|
||||
)
|
||||
await db.run(
|
||||
sql`CREATE INDEX \`payload_locked_documents_rels_categories_id_idx\` ON \`payload_locked_documents_rels\` (\`categories_id\`);`,
|
||||
)
|
||||
}
|
||||
|
||||
export async function down({ db }: MigrateDownArgs): Promise<void> {
|
||||
await db.run(
|
||||
sql`ALTER TABLE \`products\` ADD \`kategorie\` text DEFAULT 'zbrane' NOT NULL;`,
|
||||
)
|
||||
await db.run(sql`UPDATE \`products\` SET \`kategorie\` = COALESCE((
|
||||
SELECT \`slug\` FROM \`categories\` WHERE \`categories\`.\`id\` = \`products\`.\`kategorie_id\`
|
||||
), 'zbrane');`)
|
||||
|
||||
await db.run(sql`DROP INDEX IF EXISTS \`products_kategorie_idx\`;`)
|
||||
await db.run(sql`ALTER TABLE \`products\` DROP COLUMN \`kategorie_id\`;`)
|
||||
|
||||
await db.run(sql`DROP INDEX IF EXISTS \`payload_locked_documents_rels_categories_id_idx\`;`)
|
||||
await db.run(
|
||||
sql`ALTER TABLE \`payload_locked_documents_rels\` DROP COLUMN \`categories_id\`;`,
|
||||
)
|
||||
|
||||
await db.run(sql`DROP TABLE \`categories\`;`)
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import * as migration_20260730_102034_initial from './20260730_102034_initial';
|
||||
import * as migration_20260731_180000_kategorie from './20260731_180000_kategorie';
|
||||
|
||||
export const migrations = [
|
||||
{
|
||||
@@ -6,4 +7,9 @@ export const migrations = [
|
||||
down: migration_20260730_102034_initial.down,
|
||||
name: '20260730_102034_initial'
|
||||
},
|
||||
{
|
||||
up: migration_20260731_180000_kategorie.up,
|
||||
down: migration_20260731_180000_kategorie.down,
|
||||
name: '20260731_180000_kategorie'
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user