SHA256
27 03 25
Добавил документ для разработчиков (про сессии но не закончил) и исправил мекую ошибку с несопостовлениеминдексов
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user