Change id generation algorithm, display notifications total on the main page
parent
4911816734
commit
e8139b29d5
@ -1,5 +1,3 @@
|
|||||||
export const maxIdSelector = ({ db }, modelName) => db[modelName].meta.maxId;
|
|
||||||
|
|
||||||
export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken;
|
export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken;
|
||||||
|
|
||||||
export const isAppInitializingSelector = ({ app: { isInitializing } }) => isInitializing;
|
export const isAppInitializingSelector = ({ app: { isInitializing } }) => isInitializing;
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
export const nextLocalId = (maxId = 0) => maxId + Date.now() / 10000000000000;
|
export const createLocalId = () => `local:${Date.now()}`;
|
||||||
|
|
||||||
export const isLocalId = (id) => id % 1 !== 0;
|
export const isLocalId = (id) => id.startsWith('local:');
|
||||||
|
|||||||
@ -0,0 +1,26 @@
|
|||||||
|
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);
|
||||||
|
`);
|
||||||
Loading…
Reference in New Issue