Добавил документ для разработчиков (про сессии но не закончил) и исправил мекую ошибку с несопостовлениеминдексов
This commit is contained in:
AidarKC
2026-03-27 14:44:01 +03:00
parent dabda362e6
commit 6d3719ba71
16 changed files with 522 additions and 4579 deletions
@@ -28,10 +28,10 @@ public final class DatabaseInitializer {
/* ===================== TEXT (msg_type=1) ===================== */
public static final short TEXT_NEW = 1;
public static final short TEXT_REPLY = 2;
public static final short TEXT_REPOST = 3;
public static final short TEXT_EDIT = 10;
public static final short TEXT_POST = 10;
public static final short TEXT_EDIT_POST = 11;
public static final short TEXT_REPLY = 20;
public static final short TEXT_EDIT_REPLY = 21;
/* ===================== REACTION (msg_type=2) ===================== */
@@ -331,4 +331,4 @@ public final class DatabaseInitializer {
DatabaseTriggersInstaller.createAllTriggers(st);
}
}
}
}
@@ -306,12 +306,13 @@ public final class DatabaseTriggersInstaller {
}
private static void createEditApplyTrigger(Statement st) throws SQLException {
int EDIT = (int) DatabaseInitializer.TEXT_EDIT;
int EDIT_POST = (int) DatabaseInitializer.TEXT_EDIT_POST;
int EDIT_REPLY = (int) DatabaseInitializer.TEXT_EDIT_REPLY;
st.executeUpdate("""
CREATE TRIGGER IF NOT EXISTS trg_blocks_edit_apply_ai
AFTER INSERT ON blocks
WHEN NEW.msg_type = 1 AND NEW.msg_sub_type = %d
WHEN NEW.msg_type = 1 AND NEW.msg_sub_type IN (%d, %d)
BEGIN
-- 1) помечаем исходный блок, что его "перекрыл" этот edit
UPDATE blocks
@@ -346,6 +347,6 @@ public final class DatabaseTriggersInstaller {
AND NEW.to_block_number IS NOT NULL
AND NEW.to_block_hash IS NOT NULL;
END;
""".formatted(EDIT));
""".formatted(EDIT_POST, EDIT_REPLY));
}
}
}
@@ -18,17 +18,17 @@ public final class MsgSubType {
/* ===================== TEXT (msg_type=1) ===================== */
/** Новая публикация. */
public static final short TEXT_NEW = 1;
/** POST — обычный пост в канале (в линии канала). */
public static final short TEXT_POST = 10;
/** Ответ (reply). */
public static final short TEXT_REPLY = 2;
/** EDIT_POST — редактирование исходного поста. */
public static final short TEXT_EDIT_POST = 11;
/** Репост (repost). */
public static final short TEXT_REPOST = 3;
/** REPLY — ответ на сообщение. */
public static final short TEXT_REPLY = 20;
/** Редактирование (edit). */
public static final short TEXT_EDIT = 10;
/** EDIT_REPLY — редактирование исходного ответа. */
public static final short TEXT_EDIT_REPLY = 21;
/* ===================== REACTION (msg_type=2) ===================== */
@@ -70,4 +70,4 @@ public final class MsgSubType {
// не трогая 10/20/30 и 11/21/31 (например, 40/41).
// public static final short CONNECTION_BLOCK = 40;
// public static final short CONNECTION_UNBLOCK = 41;
}
}
@@ -13,7 +13,7 @@ import java.util.List;
* Возвращает по каждой активной подписке (FOLLOW) + "сам на себя":
* - login цели (channelLogin)
* - blockchainName цели (channelBchName)
* - count публикаций (TEXT_NEW)
* - count публикаций (TEXT_POST)
* - last publication: bytes оригинального блока (для timestamp)
* - last publication: bytes актуального блока (edit или orig) — для текста превью
*
@@ -92,7 +92,7 @@ public final class SubscriptionsDAO {
/**
* Получить список подписок (активные FOLLOW) + "сам на себя" и по каждой:
* - count публикаций (TEXT_NEW)
* - count публикаций (TEXT_POST)
* - последнюю публикацию (orig bytes) + её edit (если есть)
*
* Поведение при 0 публикаций:
@@ -207,11 +207,11 @@ public final class SubscriptionsDAO {
// pub_counts
ps.setInt(i++, MSG_TYPE_TEXT);
ps.setInt(i++, (int) MsgSubType.TEXT_NEW);
ps.setInt(i++, (int) MsgSubType.TEXT_POST);
// last_pub
ps.setInt(i++, MSG_TYPE_TEXT);
ps.setInt(i++, (int) MsgSubType.TEXT_NEW);
ps.setInt(i++, (int) MsgSubType.TEXT_POST);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
@@ -248,4 +248,4 @@ public final class SubscriptionsDAO {
return getSubscribedChannels(c, requesterLogin);
}
}
}
}
@@ -16,7 +16,7 @@ package shine.db.entities;
* Плюс поля индексации:
* - msg_type / msg_sub_type
* - to_* (если есть target)
* - edited_by_block_number (для TEXT_EDIT)
* - edited_by_block_number (для TEXT_EDIT_POST / TEXT_EDIT_REPLY)
*/
public class BlockEntry {
@@ -100,4 +100,4 @@ public class BlockEntry {
public Integer getThisLineNumber() { return thisLineNumber; }
public void setThisLineNumber(Integer thisLineNumber) { this.thisLineNumber = thisLineNumber; }
}
}