09 01 25
На этом с форматом разобрались и отложили всё на праздничные выходные
This commit is contained in:
parent
9d0da4b39f
commit
973a632b85
54
DOC/!!! TODO что бы не забыть - для после выходных
Normal file
54
DOC/!!! TODO что бы не забыть - для после выходных
Normal file
@ -0,0 +1,54 @@
|
||||
0. ПЕРЕДЕЛАТЬ ВСЁ НА НОВЫЙ ФОРМАТ!!
|
||||
|
||||
ВЫНЕСТИ ЭТИ ТРИ ВЕЩИ В ОБЩИЙ ПАРСЕР
|
||||
* [2] type - тип соощения
|
||||
* [2] Sиbtype - субтип сообщения
|
||||
* [2] version - версия формата соощения
|
||||
|
||||
А ОСТАЛЬНОЕ В РЕАЛИЗАЦИЮ
|
||||
|
||||
|
||||
ПЕРЕДЕЛАЕМ БД
|
||||
|
||||
1. СДЕЛАЕМ ЛИНИЮ ТОЛЬКО ДЛЯ ТЕХ ТИПОВ КОМУ НАДО (ЛАЙКАМ И ОТВЕТАМ НЕ НАДО)
|
||||
(НОМЕР СООБЩЕНИЯ В ЛИНИИ ХРАНИТЬ В БЛОКАХ ВРОДЕ И НЕ НАДО ТЕМ БОЛЕЕ ЕГО ПОТОМ ПЕРЕПРОВЕРЯТЬ ВСЁ РАВНО)
|
||||
А МОЖЕТ И НАДО ТК КАК ПО ОДНОМУ БЛОКУ ( ИЛИ ЧАСТИ БЛОКОВ ПОНЯТЬ КАКАЯ ЭТО ЧАСТЬ ПЕРЕПИСКИ - ВЕДЬ ГЛОБАЛ НОМЕР ВООБЩЕ НЕ ПОКАЗАТЕЛЬ)
|
||||
|
||||
В БД ПОМЕЧАТЬ ЧТО БЛОК ИЗ ЭТОЙ ЛИНИИ (ДЛЯ БЫСТРОГО ПОИСКА)
|
||||
|
||||
А УНИКАЛЬНЫЙ НОМЕР ЛИНИИ ЭТО ПО СУТИ НОМЕР СООБЩЕНИЯ СОЗДАВШЕГО ЛИНИЮ КАНАЛ (НУ И ФОРМАТ СООБЩЕНИЯ НАЧАЛА ЛИНИИ - КАНАЛА)
|
||||
|
||||
|
||||
2. МОЖЕТ СДЕЛАТЬ АВТОГЕНЕРАЦИЮ ПРОСТЫНЕЙ ДЛЯ ПАРСЕРОВ (И МОЖЕТ И ХЭНДЛЕРОВ(И ТАМ ЖЕ РЕКВЕСТ ПОДГРУЗИТЬСЯ))
|
||||
|
||||
3. СООТВЕТСТВЕННО удалить НАПИСАТЬ/ПЕРОВЕРИТЬ НОРМАЛЬНЫЙ SubscriptionsDAO - ТК СТАРЫЙ РАБОТАЛ НО НА ДРУГОМ ФОРМАТЕ И ТИПО КРИВО
|
||||
|
||||
и дальше:
|
||||
ЗДЕЛАТЬ ТРИ ЗАПРОСА:
|
||||
СПИСОК КАНАЛОВ НА КОГО ПОДПИСАН И ПО СКОЛЬКО СООБЩЕНИЙ И ПОСЛДНИЙ ТЕКСТ
|
||||
ДОДЕЛАТЬ И СВЯЗ ПОДПИСАН УЖЕ НЕ ТОЛЬКО НА ЧЕЛА НО И НА КАНАЛ. (И ПОЛУЧАЕТСЯ ЕСТЬ ОБЩИЙ КАНАЛЛ ПОСТОВ (НО НЕКОТОРЫЕ ПОСТЫ В НИКУДА-
|
||||
А НЕКОТОРЫЕ ПОСТЫ ОБЪЯВЛЕНИЕ КАНАЛА
|
||||
|
||||
СПИСОК СООБЩЕНИЙ В КАНАЛЕ
|
||||
|
||||
ОПСИСАНИЕ ОДНОГО СОООБЩЕНИЯ (С ИСТОРИЕЙ ДО НАЧАЛА ВЕТКИ И СО ВСЕМИ ОТВЕТАМИ НА НЕГО)
|
||||
|
||||
(НУ И В БУДУЩЕМ четвёртый ИСТОРИЮ сообщения ПО ЕДИТУ)
|
||||
|
||||
|
||||
И ПОМЯТКА
|
||||
ВСЕГДА СЧИТАЕМ ПО ПОСЛЕДНЕМУ БЛОКЧЕЙНУ ДОСТУПНОМУ ПОЛЬЗОВАТЕЛЮ
|
||||
ХОТЯ ССЫЛКА ПО НОМЕРУ БЛОКЧЕЙНА КУДА ДОБАВИЛИ
|
||||
|
||||
ЛАЙКИ И ОТВЕТЫ ПИШЕМ НА НОМЕР СООБЩЕНИЯ ЕДИТА
|
||||
(СЧИТАЕМ ТРИГЕРОМ И НА ОРИГИНАЛЬНЫЙ СУМАРНОЕ И ОТДЕЛЬНО НА НЕГО, И НА КАЖДЫЙ ЕДИТ ОТДЕЛЬНО)
|
||||
|
||||
ОТВЕТЫ ПОКАЗЫВАЕМ ВСЕ ВРАЗ
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -10,13 +10,13 @@ import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* BchBlockEntry_new — универсальный блок нового формата.
|
||||
* старый формат
|
||||
*
|
||||
* RAW (BigEndian):
|
||||
* [4] recordSize (int) = размер RAW (включая этот заголовок), БЕЗ signature+hash
|
||||
* [4] recordNumber (int) глобальный номер блока
|
||||
* [8] timestamp (long) unix seconds
|
||||
* [2] lineIndex (short)
|
||||
[2] lineIndex (short)
|
||||
* [4] lineNumber (int)
|
||||
* [N] bodyBytes (body, начинается с [type][version])
|
||||
*
|
||||
@ -24,6 +24,56 @@ import java.util.Objects;
|
||||
* [64] signature64 (Ed25519)
|
||||
* [32] hash32 (SHA-256)
|
||||
*/
|
||||
СМОТРИ файл : "!!! TODO что бы не забыть"
|
||||
/**
|
||||
* BchBlockEntry — универсальный блок нового формата.
|
||||
*
|
||||
* RAW (BigEndian):
|
||||
* Неизменное заглавие
|
||||
* [32] prevHash32 (SHA-256) ХЭЩ ПРИВЕДУЩЕГО
|
||||
* [4] blockSize (int) = размер RAW (включая этот заголовок), БЕЗ signature
|
||||
* [4] blockNumber (int) номер блока
|
||||
* [8] timestamp (long) unix seconds
|
||||
|
||||
* Само сообщение
|
||||
* [2] type - тип соощения
|
||||
* [2] Sиbtype - субтип сообщения
|
||||
* [2] version - версия формата соощения
|
||||
* [4] prevLineNumber НОМЕР ПРИВЕДУЩЕГО СООБЩЕНИЯ В ЛИНИИ - может быть а может и небыть в зависимости от типа сообщения
|
||||
* [32] prevLineHash ХЭШ ПРИВЕДУЩЕГО СООБЩЕНИЯ В ЛИНИИ - может быть а может и небыть в зависимости от типа сообщения
|
||||
* [N] bodyBytes (ОСТАЛЬНЫЕ БАЙТЫ])
|
||||
|
||||
* TAIL (НЕ входит в recordSize):
|
||||
* [64] signature64 (Ed25519)
|
||||
* И хэш в конце блока мы не храним, тк он будет в начале следующего блока. А для проверки блока оно не нужно тк мы каждый раз провеяем подпись . А она основана на хэше
|
||||
*
|
||||
|
||||
|
||||
* [32] hash32 (SHA-256)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public final class BchBlockEntry {
|
||||
|
||||
public static final int SIGNATURE_LEN = 64;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package blockchain;
|
||||
package shine.db;
|
||||
|
||||
/**
|
||||
* shine.db.MsgSubType — единое место для ВСЕХ subType сообщений (msg_sub_type).
|
||||
* MsgSubType — единое место для ВСЕХ subType сообщений (msg_sub_type).
|
||||
*
|
||||
* Правило:
|
||||
* - НИКАКИХ "магических чисел" subType по проекту.
|
||||
@ -14,18 +14,23 @@ public final class MsgSubType {
|
||||
|
||||
private MsgSubType() {}
|
||||
|
||||
/* ===================== HEADER (msg_type=0) ===================== */
|
||||
|
||||
/** HeaderBody: subType всегда 0 (compat). */
|
||||
public static final short HEADER_COMPAT = 0;
|
||||
|
||||
/* ===================== TEXT (msg_type=1) ===================== */
|
||||
|
||||
/** Новое сообщение (начало ветки). */
|
||||
/** Новая публикация. */
|
||||
public static final short TEXT_NEW = 1;
|
||||
|
||||
/** Ответ на сообщение (reply). */
|
||||
/** Ответ (reply). */
|
||||
public static final short TEXT_REPLY = 2;
|
||||
|
||||
/** Репост (repost). */
|
||||
public static final short TEXT_REPOST = 3;
|
||||
|
||||
/** Редактирование (edit). ВАЖНО: серверное значение = 10. */
|
||||
/** Редактирование (edit). */
|
||||
public static final short TEXT_EDIT = 10;
|
||||
|
||||
/* ===================== REACTION (msg_type=2) ===================== */
|
||||
@ -34,6 +39,11 @@ public final class MsgSubType {
|
||||
public static final short REACTION_LIKE = 1;
|
||||
|
||||
/* ===================== CONNECTION (msg_type=3) ===================== */
|
||||
/**
|
||||
* Совпадает с ConnectionBody:
|
||||
* SET: FRIEND=10, CONTACT=20, FOLLOW=30
|
||||
* UNSET: UNFRIEND=11, UNCONTACT=21, UNFOLLOW=31
|
||||
*/
|
||||
|
||||
/** Добавить в друзья. */
|
||||
public static final short CONNECTION_FRIEND = 10;
|
||||
@ -41,15 +51,22 @@ public final class MsgSubType {
|
||||
/** Удалить из друзей. */
|
||||
public static final short CONNECTION_UNFRIEND = 11;
|
||||
|
||||
/** Добавить в контакты. */
|
||||
public static final short CONNECTION_CONTACT = 20;
|
||||
|
||||
/** Удалить из контактов. */
|
||||
public static final short CONNECTION_UNCONTACT = 21;
|
||||
|
||||
/** Подписаться (follow). */
|
||||
public static final short CONNECTION_FOLLOW = 20;
|
||||
public static final short CONNECTION_FOLLOW = 30;
|
||||
|
||||
/** Отписаться (unfollow). */
|
||||
public static final short CONNECTION_UNFOLLOW = 21;
|
||||
public static final short CONNECTION_UNFOLLOW = 31;
|
||||
|
||||
/** Заблокировать. */
|
||||
public static final short CONNECTION_BLOCK = 30;
|
||||
/* ===================== USER_PARAM (msg_type=4) ===================== */
|
||||
|
||||
/** Разблокировать. */
|
||||
public static final short CONNECTION_UNBLOCK = 31;
|
||||
}
|
||||
/** Параметр профиля key/value (обе строки). */
|
||||
public static final short USER_PARAM_TEXT_TEXT = 1;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,31 +1,33 @@
|
||||
package shine.db;
|
||||
|
||||
/**
|
||||
* shine.db.MsgSubType — единое место для ВСЕХ subType сообщений (msg_sub_type).
|
||||
* MsgSubType — единое место для ВСЕХ subType сообщений (msg_sub_type).
|
||||
*
|
||||
* Правило:
|
||||
* - НИКАКИХ "магических чисел" subType по проекту.
|
||||
* - В тестах, в body-классах и в SQL-триггерах используем только эти константы.
|
||||
*
|
||||
* Важно:
|
||||
* - Значения менять после релиза нельзя (иначе сломается совместимость).
|
||||
* ВАЖНО:
|
||||
* - Значения должны совпадать с body-классами (TextBody/ReactionBody/ConnectionBody/UserParamBody/HeaderBody).
|
||||
* - После релиза менять числа нельзя (иначе ломается совместимость данных).
|
||||
*/
|
||||
public final class MsgSubType {
|
||||
|
||||
private MsgSubType() {}
|
||||
|
||||
/* ===================== HEADER (msg_type=0) ===================== */
|
||||
|
||||
/** HeaderBody: subType всегда 0 (compat). */
|
||||
public static final short HEADER_COMPAT = 0;
|
||||
|
||||
/* ===================== TEXT (msg_type=1) ===================== */
|
||||
|
||||
/** Новое сообщение (начало ветки). */
|
||||
/** Новая публикация. */
|
||||
public static final short TEXT_NEW = 1;
|
||||
|
||||
/** Ответ на сообщение (reply). */
|
||||
/** Ответ (reply). */
|
||||
public static final short TEXT_REPLY = 2;
|
||||
|
||||
/** Репост (repost). */
|
||||
public static final short TEXT_REPOST = 3;
|
||||
|
||||
/** Редактирование (edit). ВАЖНО: серверное значение = 10. */
|
||||
/** Редактирование (edit). */
|
||||
public static final short TEXT_EDIT = 10;
|
||||
|
||||
/* ===================== REACTION (msg_type=2) ===================== */
|
||||
@ -34,6 +36,11 @@ public final class MsgSubType {
|
||||
public static final short REACTION_LIKE = 1;
|
||||
|
||||
/* ===================== CONNECTION (msg_type=3) ===================== */
|
||||
/**
|
||||
* Совпадает с ConnectionBody:
|
||||
* SET: FRIEND=10, CONTACT=20, FOLLOW=30
|
||||
* UNSET: UNFRIEND=11, UNCONTACT=21, UNFOLLOW=31
|
||||
*/
|
||||
|
||||
/** Добавить в друзья. */
|
||||
public static final short CONNECTION_FRIEND = 10;
|
||||
@ -41,15 +48,26 @@ public final class MsgSubType {
|
||||
/** Удалить из друзей. */
|
||||
public static final short CONNECTION_UNFRIEND = 11;
|
||||
|
||||
/** Добавить в контакты. */
|
||||
public static final short CONNECTION_CONTACT = 20;
|
||||
|
||||
/** Удалить из контактов. */
|
||||
public static final short CONNECTION_UNCONTACT = 21;
|
||||
|
||||
/** Подписаться (follow). */
|
||||
public static final short CONNECTION_FOLLOW = 30;
|
||||
|
||||
/** Отписаться (unfollow). */
|
||||
public static final short CONNECTION_UNFOLLOW = 31;
|
||||
//
|
||||
// /** Заблокировать. */
|
||||
// public static final short CONNECTION_BLOCK = 30;
|
||||
//
|
||||
// /** Разблокировать. */
|
||||
// public static final short CONNECTION_UNBLOCK = 31;
|
||||
|
||||
/* ===================== USER_PARAM (msg_type=4) ===================== */
|
||||
|
||||
/** Параметр профиля key/value (обе строки). */
|
||||
public static final short USER_PARAM_TEXT_TEXT = 1;
|
||||
|
||||
/* ===================== РЕЗЕРВ НА БУДУЩЕЕ ===================== */
|
||||
// Если позже захочешь BLOCK/UNBLOCK — лучше добавить НОВЫЕ значения,
|
||||
// не трогая 10/20/30 и 11/21/31 (например, 40/41).
|
||||
// public static final short CONNECTION_BLOCK = 40;
|
||||
// public static final short CONNECTION_UNBLOCK = 41;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user