mirror of
https://github.com/plankanban/planka.git
synced 2025-07-18 20:59:44 +02:00
24 lines
690 B
JavaScript
24 lines
690 B
JavaScript
module.exports.up = (knex) =>
|
|
knex.raw(`
|
|
CREATE SEQUENCE next_id_seq;
|
|
CREATE FUNCTION next_id(OUT id BIGINT) AS $$
|
|
DECLARE
|
|
shard INT := 1;
|
|
epoch BIGINT := 1567191600000;
|
|
sequence BIGINT;
|
|
milliseconds BIGINT;
|
|
BEGIN
|
|
SELECT nextval('next_id_seq') % 1024 INTO sequence;
|
|
SELECT FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 1000) INTO milliseconds;
|
|
id := (milliseconds - epoch) << 23;
|
|
id := id | (shard << 10);
|
|
id := id | (sequence);
|
|
END;
|
|
$$ LANGUAGE PLPGSQL;
|
|
`);
|
|
|
|
module.exports.down = (knex) =>
|
|
knex.raw(`
|
|
DROP SEQUENCE next_id_seq;
|
|
DROP FUNCTION next_id(OUT id BIGINT);
|
|
`);
|