storage

package
v0.0.0-...-d0249f0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 29, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

internal/storage/sqlite.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteOldMessages

func DeleteOldMessages(db *sql.DB, olderThan int64) (int64, error)

DeleteOldMessages removes messages older than the specified timestamp

func InitDB

func InitDB(path string) (*sql.DB, error)

InitDB opens (or creates) the SQLite file at path, applies schema, and returns the *sql.DB.

func OptimizeDatabase

func OptimizeDatabase(db *sql.DB) error

OptimizeDatabase runs VACUUM and ANALYZE on the database

func SaveMessage

func SaveMessage(db *sql.DB, room, peerID, msgType string, content []byte, filename *string) error

SaveMessage writes a chat message (text or file chunk) into the messages table. filename can be empty when msgType != "file".

Types

type DatabaseStats

type DatabaseStats struct {
	TotalMessages int64 `json:"total_messages"`
	TotalRooms    int64 `json:"total_rooms"`
	TotalPeers    int64 `json:"total_peers"`
	DatabaseSize  int64 `json:"database_size_bytes"`
}

DatabaseStats contains database statistics

func GetDatabaseStats

func GetDatabaseStats(db *sql.DB) (*DatabaseStats, error)

GetDatabaseStats retrieves database statistics

type PaginatedMessage

type PaginatedMessage struct {
	ID        int64  `json:"id"`
	PeerID    string `json:"peer_id"`
	Text      string `json:"text"`
	MsgType   string `json:"msg_type"`
	Timestamp int64  `json:"timestamp"`
	Filename  string `json:"filename,omitempty"`
}

PaginatedMessage represents a message with metadata for pagination

func SearchMessages

func SearchMessages(db *sql.DB, room, query string, limit int) ([]PaginatedMessage, error)

SearchMessages searches messages by text content

type PaginatedResult

type PaginatedResult struct {
	Messages   []PaginatedMessage `json:"messages"`
	Total      int64              `json:"total"`
	Page       int                `json:"page"`
	PerPage    int                `json:"per_page"`
	TotalPages int                `json:"total_pages"`
	HasMore    bool               `json:"has_more"`
}

PaginatedResult contains paginated messages with metadata

func GetMessagesPaginated

func GetMessagesPaginated(db *sql.DB, room string, page, perPage int, since int64) (*PaginatedResult, error)

GetMessagesPaginated retrieves messages with pagination support

type PeerInfo

type PeerInfo struct {
	PeerID       string `json:"peer_id"`
	FirstSeen    int64  `json:"first_seen"`
	LastSeen     int64  `json:"last_seen"`
	MessageCount int64  `json:"message_count"`
}

PeerInfo contains peer metadata

func GetPeerInfo

func GetPeerInfo(db *sql.DB, peerID string) (*PeerInfo, error)

GetPeerInfo retrieves peer information

func ListPeersInRoom

func ListPeersInRoom(db *sql.DB, room string) ([]PeerInfo, error)

ListPeersInRoom lists all peers who have messaged in a room

type RoomInfo

type RoomInfo struct {
	Name         string `json:"name"`
	CreatedAt    int64  `json:"created_at"`
	LastActive   int64  `json:"last_active"`
	MessageCount int64  `json:"message_count"`
	PeerCount    int64  `json:"peer_count"`
}

RoomInfo contains room metadata

func GetRoomInfo

func GetRoomInfo(db *sql.DB, room string) (*RoomInfo, error)

GetRoomInfo retrieves detailed room information

func ListRooms

func ListRooms(db *sql.DB) ([]RoomInfo, error)

ListRooms lists all rooms with basic info

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL