On Wednesday 31 May 2017 11:20:41 Paulo Lieuthier wrote:
> On 29-05-2017 04:41, Pali Rohár wrote:
> > On Sunday 28 May 2017 23:04:57 Paulo Lieuthier wrote:
> >> Hey, Pali. I thought history2 was the best option today.
> > 
> > history2 does not support rich text messages, so no is not a good.
> > 
> >> I just updated my
> >> timetable aiming to convert the XML-based one, and start by preparing the 
> >> schema
> >> and searching for a good database solution.
> > 
> > Look into mailing list archive. There were already some ideas, so better
> > do not invent wheel from the start, but rather fix design of some
> > existing schemas.
> 
> I had already tried to read previous discussions on the mailing list archive,
> but it is always empty to me ("No messages have been posted to this list yet, 
> so
> the archives are currently empty").

Working link is on GSoC page also with information which you already
should read & process...
https://community.kde.org/GSoC/2017/Ideas#Project:_Chat_history_improvements

Direct link to archive:
https://marc.info/?l=kopete-devel

> >> Do you think converting the SQLite-based plugin into another backend is 
> >> worth it
> >> (that if SQLite is not the chosen database solution)? I can do it if there 
> >> is
> >> enough time.
> > 
> > I think SQLite should be fine for metadata. If text messages itself
> > should be in SQLite it would depends on doing some experiments if it is
> > fast enough. Also we need full text search support. SQLite has some
> > plugins for it, but probably different indexes would be better (or
> > not?).
> 
> You are right, better not to reinvent the wheel. But I'm yet to understand 
> where
> we are right now, to be able to move forward. From what I understood, I should
> start from the XML-based plugin, but (probably) use SQLite for storage. That
> sounds like a merge, right?

XML or SQLite is just a storage. For usage you need logic, layer which
can effectively use that storage.

> Maybe I'm missing something obvious to get to the ML archive, maybe someone
> should fix some permission thing. I'd really like to read the previous
> discussions. Anyway, I need help to know which direction to go to.

Before decision for storage it is needed which data to store and what
structure has data...

I dig from archive last idea:

    "id" Integer Primary Key Autoincrement Not Null, --Unique message identifier
    "timestamp" Integer, --When the message was handled
    "message" Text, --HTML containing the message contents
    "protocol" Text Not Null, --Protocol used (Kopete::Protocol::pluginId())
    "account" Text Not Null, --Account used (Kopete::Account::accountId())
    "direction" Integer Not Null, --(Inbound = 0, Outbound=1, Internal=2) 
(Kopete::Message::MessageDirection)
    "importance" Integer, -- (Low, Normal, Highlight) (Kopete::Message) 
(Kopete::Message::MessageImportance)
    "contact" Text, -- The local contact used in this message (if applicable). 
(Kopete::Contact::ContactId()).
    "subject" Text, --If applicable, this will store the subject of the message
    "session" Text, -- Internal session identifier.
    "session_name" Text, -- A human readable name for the session.
    "from" Text, --Internal identifier for the message sender
    "from_name" Text, --Human readable name of the message sender
    "to" Text, --Internal identifier for the message recipient
    "to_name" Text, --Human readable name of the message recipient.
    "state" Integer, --(Unknown = 0, Sending = 1, Sent = 2, Error = 3)
    "type" Integer, --The type of message. (TypeNormal, TypeAction, 
TypeFileTransferRequest, TypeVoiceClipRequest) (Kopete::Message::MessageType)
    "is_group" Integer Default='0' --If this is set to 1, then we know we are 
in multi user mode.

Do not know if it match all things, but could be a good starting point.

-- 
Pali Rohár
pali.ro...@gmail.com

Reply via email to