56 lines
1.4 KiB
SQL
56 lines
1.4 KiB
SQL
create table operation
|
|
(
|
|
id bigserial primary key
|
|
, redo text not null
|
|
, undo text not null
|
|
, parent integer references operation(id) on delete cascade
|
|
, redo_child integer references operation(id) -- must update before delete
|
|
, redo_cs text not null
|
|
, undo_cs text not null
|
|
);
|
|
|
|
insert into operation (id, redo, undo, redo_cs, undo_cs) values (0, '', '', '', '');
|
|
|
|
create table current_operation
|
|
(
|
|
id bigint primary key references operation(id) -- must update before delete
|
|
);
|
|
|
|
insert into current_operation (id) values (0);
|
|
|
|
create table snapshot_operation
|
|
(
|
|
id bigint primary key references operation(id) on delete cascade
|
|
, tag text not null unique
|
|
);
|
|
|
|
create table restore_operation
|
|
(
|
|
id bigint primary key references operation(id) -- set after reading inp
|
|
);
|
|
|
|
insert into restore_operation (id) values (0);
|
|
|
|
|
|
create table batch_operation
|
|
(
|
|
id bigserial primary key
|
|
, redo text not null
|
|
, undo text not null
|
|
, parent integer references operation(id) on delete cascade
|
|
, redo_child integer references operation(id) -- must update before delete
|
|
, redo_cs text not null
|
|
, undo_cs text not null
|
|
);
|
|
|
|
insert into batch_operation (id, redo, undo, redo_cs, undo_cs) values (0, '', '', '', '');
|
|
|
|
create type operation_table_option as enum ('operation', 'batch_operation');
|
|
|
|
create table operation_table
|
|
(
|
|
option operation_table_option primary key
|
|
);
|
|
|
|
insert into operation_table (option) values ('operation');
|