diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-07-03 14:02:27 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-07-03 14:02:27 +0200 |
commit | 55fe06979ceebe67553135b43aa47e70d931304b (patch) | |
tree | 16b10a744879cc1872d6c07624b59ae64469ddbf /common/domain/typeimplementations.cpp | |
parent | 56fae95f49a1ca8ca614bd9f89b0ea5f872765e9 (diff) | |
parent | 288946f1694c2abe1d2c5800c87339d1e8780e4b (diff) | |
download | sink-55fe06979ceebe67553135b43aa47e70d931304b.tar.gz sink-55fe06979ceebe67553135b43aa47e70d931304b.zip |
Merge branch 'develop'
Diffstat (limited to 'common/domain/typeimplementations.cpp')
-rw-r--r-- | common/domain/typeimplementations.cpp | 193 |
1 files changed, 93 insertions, 100 deletions
diff --git a/common/domain/typeimplementations.cpp b/common/domain/typeimplementations.cpp index eb3851e..47a9cf7 100644 --- a/common/domain/typeimplementations.cpp +++ b/common/domain/typeimplementations.cpp | |||
@@ -28,25 +28,52 @@ | |||
28 | #include "entity_generated.h" | 28 | #include "entity_generated.h" |
29 | #include "mail/threadindexer.h" | 29 | #include "mail/threadindexer.h" |
30 | #include "domainadaptor.h" | 30 | #include "domainadaptor.h" |
31 | #include "typeimplementations_p.h" | ||
31 | 32 | ||
32 | using namespace Sink; | 33 | using namespace Sink; |
33 | using namespace Sink::ApplicationDomain; | 34 | using namespace Sink::ApplicationDomain; |
34 | 35 | ||
36 | #define SINK_REGISTER_SERIALIZER(MAPPER, ENTITYTYPE, PROPERTY, LOWERCASEPROPERTY) \ | ||
37 | MAPPER.addMapping<ENTITYTYPE::PROPERTY, Sink::ApplicationDomain::Buffer::ENTITYTYPE, Sink::ApplicationDomain::Buffer::ENTITYTYPE##Builder>(&Sink::ApplicationDomain::Buffer::ENTITYTYPE::LOWERCASEPROPERTY, &Sink::ApplicationDomain::Buffer::ENTITYTYPE##Builder::add_##LOWERCASEPROPERTY); | ||
38 | |||
39 | typedef IndexConfig<Mail, | ||
40 | ValueIndex<Mail::Date>, | ||
41 | ValueIndex<Mail::Folder>, | ||
42 | ValueIndex<Mail::ParentMessageId>, | ||
43 | ValueIndex<Mail::MessageId>, | ||
44 | ValueIndex<Mail::Draft>, | ||
45 | SortedIndex<Mail::Folder, Mail::Date>, | ||
46 | SecondaryIndex<Mail::MessageId, Mail::ThreadId>, | ||
47 | SecondaryIndex<Mail::ThreadId, Mail::MessageId>, | ||
48 | CustomSecondaryIndex<Mail::MessageId, Mail::ThreadId, ThreadIndexer> | ||
49 | > MailIndexConfig; | ||
50 | |||
51 | typedef IndexConfig<Folder, | ||
52 | ValueIndex<Folder::Name>, | ||
53 | ValueIndex<Folder::Parent> | ||
54 | > FolderIndexConfig; | ||
55 | |||
56 | typedef IndexConfig<Contact, | ||
57 | ValueIndex<Contact::Uid> | ||
58 | > ContactIndexConfig; | ||
59 | |||
60 | typedef IndexConfig<Addressbook, | ||
61 | ValueIndex<Addressbook::Parent> | ||
62 | > AddressbookIndexConfig; | ||
63 | |||
64 | typedef IndexConfig<Event, | ||
65 | ValueIndex<Event::Uid> | ||
66 | > EventIndexConfig; | ||
67 | |||
68 | |||
35 | void TypeImplementation<Mail>::configure(TypeIndex &index) | 69 | void TypeImplementation<Mail>::configure(TypeIndex &index) |
36 | { | 70 | { |
37 | // index.addProperty<Mail::Sender>(); | 71 | MailIndexConfig::configure(index); |
38 | /* index.addProperty<QByteArray>(Mail::SenderName::name); */ | 72 | } |
39 | /* index->addProperty<QString>(Mail::Subject::name); */ | ||
40 | /* index->addFulltextProperty<QString>(Mail::Subject::name); */ | ||
41 | index.addProperty<Mail::Date>(); | ||
42 | index.addProperty<Mail::Folder>(); | ||
43 | index.addPropertyWithSorting<Mail::Folder, Mail::Date>(); | ||
44 | index.addProperty<Mail::ParentMessageId>(); | ||
45 | index.addProperty<Mail::MessageId>(); | ||
46 | 73 | ||
47 | index.addSecondaryPropertyIndexer<Mail::MessageId, Mail::ThreadId, ThreadIndexer>(); | 74 | QMap<QByteArray, int> TypeImplementation<Mail>::typeDatabases() |
48 | index.addSecondaryProperty<Mail::MessageId, Mail::ThreadId>(); | 75 | { |
49 | index.addSecondaryProperty<Mail::ThreadId, Mail::MessageId>(); | 76 | return merge(QMap<QByteArray, int>{{QByteArray{Mail::name} + ".main", 0}}, MailIndexConfig::databases()); |
50 | } | 77 | } |
51 | 78 | ||
52 | void TypeImplementation<Mail>::configure(IndexPropertyMapper &indexPropertyMapper) | 79 | void TypeImplementation<Mail>::configure(IndexPropertyMapper &indexPropertyMapper) |
@@ -61,69 +88,44 @@ void TypeImplementation<Mail>::configure(IndexPropertyMapper &indexPropertyMappe | |||
61 | }); | 88 | }); |
62 | } | 89 | } |
63 | 90 | ||
64 | void TypeImplementation<Mail>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | 91 | void TypeImplementation<Mail>::configure(PropertyMapper &propertyMapper) |
65 | { | 92 | { |
66 | propertyMapper.addMapping<Mail::Sender, Buffer>(&Buffer::sender); | 93 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Sender, sender); |
67 | propertyMapper.addMapping<Mail::To, Buffer>(&Buffer::to); | 94 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, To, to); |
68 | propertyMapper.addMapping<Mail::Cc, Buffer>(&Buffer::cc); | 95 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Cc, cc); |
69 | propertyMapper.addMapping<Mail::Bcc, Buffer>(&Buffer::bcc); | 96 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Bcc, bcc); |
70 | propertyMapper.addMapping<Mail::Subject, Buffer>(&Buffer::subject); | 97 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Subject, subject); |
71 | propertyMapper.addMapping<Mail::Date, Buffer>(&Buffer::date); | 98 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Date, date); |
72 | propertyMapper.addMapping<Mail::Unread, Buffer>(&Buffer::unread); | 99 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Unread, unread); |
73 | propertyMapper.addMapping<Mail::Important, Buffer>(&Buffer::important); | 100 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Important, important); |
74 | propertyMapper.addMapping<Mail::Folder, Buffer>(&Buffer::folder); | 101 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Folder, folder); |
75 | propertyMapper.addMapping<Mail::MimeMessage, Buffer>(&Buffer::mimeMessage); | 102 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, MimeMessage, mimeMessage); |
76 | propertyMapper.addMapping<Mail::FullPayloadAvailable, Buffer>(&Buffer::fullPayloadAvailable); | 103 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, FullPayloadAvailable, fullPayloadAvailable); |
77 | propertyMapper.addMapping<Mail::Draft, Buffer>(&Buffer::draft); | 104 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Draft, draft); |
78 | propertyMapper.addMapping<Mail::Trash, Buffer>(&Buffer::trash); | 105 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Trash, trash); |
79 | propertyMapper.addMapping<Mail::Sent, Buffer>(&Buffer::sent); | 106 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, Sent, sent); |
80 | propertyMapper.addMapping<Mail::MessageId, Buffer>(&Buffer::messageId); | 107 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, MessageId, messageId); |
81 | propertyMapper.addMapping<Mail::ParentMessageId, Buffer>(&Buffer::parentMessageId); | 108 | SINK_REGISTER_SERIALIZER(propertyMapper, Mail, ParentMessageId, parentMessageId); |
82 | } | ||
83 | |||
84 | void TypeImplementation<Mail>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | ||
85 | { | ||
86 | propertyMapper.addMapping<Mail::Sender>(&BufferBuilder::add_sender); | ||
87 | propertyMapper.addMapping<Mail::To>(&BufferBuilder::add_to); | ||
88 | propertyMapper.addMapping<Mail::Cc>(&BufferBuilder::add_cc); | ||
89 | propertyMapper.addMapping<Mail::Bcc>(&BufferBuilder::add_bcc); | ||
90 | propertyMapper.addMapping<Mail::Subject>(&BufferBuilder::add_subject); | ||
91 | propertyMapper.addMapping<Mail::Date>(&BufferBuilder::add_date); | ||
92 | propertyMapper.addMapping<Mail::Unread>(&BufferBuilder::add_unread); | ||
93 | propertyMapper.addMapping<Mail::Important>(&BufferBuilder::add_important); | ||
94 | propertyMapper.addMapping<Mail::Folder>(&BufferBuilder::add_folder); | ||
95 | propertyMapper.addMapping<Mail::MimeMessage>(&BufferBuilder::add_mimeMessage); | ||
96 | propertyMapper.addMapping<Mail::FullPayloadAvailable>(&BufferBuilder::add_fullPayloadAvailable); | ||
97 | propertyMapper.addMapping<Mail::Draft>(&BufferBuilder::add_draft); | ||
98 | propertyMapper.addMapping<Mail::Trash>(&BufferBuilder::add_trash); | ||
99 | propertyMapper.addMapping<Mail::Sent>(&BufferBuilder::add_sent); | ||
100 | propertyMapper.addMapping<Mail::MessageId>(&BufferBuilder::add_messageId); | ||
101 | propertyMapper.addMapping<Mail::ParentMessageId>(&BufferBuilder::add_parentMessageId); | ||
102 | } | 109 | } |
103 | 110 | ||
104 | 111 | ||
105 | void TypeImplementation<Folder>::configure(TypeIndex &index) | 112 | void TypeImplementation<Folder>::configure(TypeIndex &index) |
106 | { | 113 | { |
107 | index.addProperty<QByteArray>(Folder::Parent::name); | 114 | FolderIndexConfig::configure(index); |
108 | index.addProperty<QString>(Folder::Name::name); | ||
109 | } | 115 | } |
110 | 116 | ||
111 | void TypeImplementation<Folder>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | 117 | QMap<QByteArray, int> TypeImplementation<Folder>::typeDatabases() |
112 | { | 118 | { |
113 | propertyMapper.addMapping<Folder::Parent, Buffer>(&Buffer::parent); | 119 | return merge(QMap<QByteArray, int>{{QByteArray{Folder::name} + ".main", 0}}, FolderIndexConfig::databases()); |
114 | propertyMapper.addMapping<Folder::Name, Buffer>(&Buffer::name); | ||
115 | propertyMapper.addMapping<Folder::Icon, Buffer>(&Buffer::icon); | ||
116 | propertyMapper.addMapping<Folder::SpecialPurpose, Buffer>(&Buffer::specialpurpose); | ||
117 | propertyMapper.addMapping<Folder::Enabled, Buffer>(&Buffer::enabled); | ||
118 | } | 120 | } |
119 | 121 | ||
120 | void TypeImplementation<Folder>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 122 | void TypeImplementation<Folder>::configure(PropertyMapper &propertyMapper) |
121 | { | 123 | { |
122 | propertyMapper.addMapping<Folder::Parent>(&BufferBuilder::add_parent); | 124 | SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Parent, parent); |
123 | propertyMapper.addMapping<Folder::Name>(&BufferBuilder::add_name); | 125 | SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Name, name); |
124 | propertyMapper.addMapping<Folder::Icon>(&BufferBuilder::add_icon); | 126 | SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Icon, icon); |
125 | propertyMapper.addMapping<Folder::SpecialPurpose>(&BufferBuilder::add_specialpurpose); | 127 | SINK_REGISTER_SERIALIZER(propertyMapper, Folder, SpecialPurpose, specialpurpose); |
126 | propertyMapper.addMapping<Folder::Enabled>(&BufferBuilder::add_enabled); | 128 | SINK_REGISTER_SERIALIZER(propertyMapper, Folder, Enabled, enabled); |
127 | } | 129 | } |
128 | 130 | ||
129 | void TypeImplementation<Folder>::configure(IndexPropertyMapper &) | 131 | void TypeImplementation<Folder>::configure(IndexPropertyMapper &) |
@@ -134,29 +136,24 @@ void TypeImplementation<Folder>::configure(IndexPropertyMapper &) | |||
134 | 136 | ||
135 | void TypeImplementation<Contact>::configure(TypeIndex &index) | 137 | void TypeImplementation<Contact>::configure(TypeIndex &index) |
136 | { | 138 | { |
137 | index.addProperty<QByteArray>(Contact::Uid::name); | 139 | ContactIndexConfig::configure(index); |
138 | } | 140 | } |
139 | 141 | ||
140 | void TypeImplementation<Contact>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | 142 | QMap<QByteArray, int> TypeImplementation<Contact>::typeDatabases() |
141 | { | 143 | { |
142 | propertyMapper.addMapping<Contact::Uid, Buffer>(&Buffer::uid); | 144 | return merge(QMap<QByteArray, int>{{QByteArray{Contact::name} + ".main", 0}}, ContactIndexConfig::databases()); |
143 | propertyMapper.addMapping<Contact::Fn, Buffer>(&Buffer::fn); | ||
144 | propertyMapper.addMapping<Contact::Emails, Buffer>(&Buffer::emails); | ||
145 | propertyMapper.addMapping<Contact::Vcard, Buffer>(&Buffer::vcard); | ||
146 | propertyMapper.addMapping<Contact::Addressbook, Buffer>(&Buffer::addressbook); | ||
147 | propertyMapper.addMapping<Contact::Firstname, Buffer>(&Buffer::firstname); | ||
148 | propertyMapper.addMapping<Contact::Lastname, Buffer>(&Buffer::lastname); | ||
149 | } | 145 | } |
150 | 146 | ||
151 | void TypeImplementation<Contact>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 147 | void TypeImplementation<Contact>::configure(PropertyMapper &propertyMapper) |
152 | { | 148 | { |
153 | propertyMapper.addMapping<Contact::Uid>(&BufferBuilder::add_uid); | 149 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Uid, uid); |
154 | propertyMapper.addMapping<Contact::Fn>(&BufferBuilder::add_fn); | 150 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Fn, fn); |
155 | propertyMapper.addMapping<Contact::Emails>(&BufferBuilder::add_emails); | 151 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Emails, emails); |
156 | propertyMapper.addMapping<Contact::Vcard>(&BufferBuilder::add_vcard); | 152 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Vcard, vcard); |
157 | propertyMapper.addMapping<Contact::Addressbook>(&BufferBuilder::add_addressbook); | 153 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Addressbook, addressbook); |
158 | propertyMapper.addMapping<Contact::Firstname>(&BufferBuilder::add_firstname); | 154 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Firstname, firstname); |
159 | propertyMapper.addMapping<Contact::Lastname>(&BufferBuilder::add_lastname); | 155 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Lastname, lastname); |
156 | SINK_REGISTER_SERIALIZER(propertyMapper, Contact, Photo, photo); | ||
160 | } | 157 | } |
161 | 158 | ||
162 | void TypeImplementation<Contact>::configure(IndexPropertyMapper &) | 159 | void TypeImplementation<Contact>::configure(IndexPropertyMapper &) |
@@ -167,20 +164,18 @@ void TypeImplementation<Contact>::configure(IndexPropertyMapper &) | |||
167 | 164 | ||
168 | void TypeImplementation<Addressbook>::configure(TypeIndex &index) | 165 | void TypeImplementation<Addressbook>::configure(TypeIndex &index) |
169 | { | 166 | { |
170 | index.addProperty<QByteArray>(Addressbook::Parent::name); | 167 | AddressbookIndexConfig::configure(index); |
171 | index.addProperty<QString>(Addressbook::Name::name); | ||
172 | } | 168 | } |
173 | 169 | ||
174 | void TypeImplementation<Addressbook>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | 170 | QMap<QByteArray, int> TypeImplementation<Addressbook>::typeDatabases() |
175 | { | 171 | { |
176 | propertyMapper.addMapping<Addressbook::Parent, Buffer>(&Buffer::parent); | 172 | return merge(QMap<QByteArray, int>{{QByteArray{Addressbook::name} + ".main", 0}}, AddressbookIndexConfig::databases()); |
177 | propertyMapper.addMapping<Addressbook::Name, Buffer>(&Buffer::name); | ||
178 | } | 173 | } |
179 | 174 | ||
180 | void TypeImplementation<Addressbook>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 175 | void TypeImplementation<Addressbook>::configure(PropertyMapper &propertyMapper) |
181 | { | 176 | { |
182 | propertyMapper.addMapping<Addressbook::Parent>(&BufferBuilder::add_parent); | 177 | SINK_REGISTER_SERIALIZER(propertyMapper, Addressbook, Parent, parent); |
183 | propertyMapper.addMapping<Addressbook::Name>(&BufferBuilder::add_name); | 178 | SINK_REGISTER_SERIALIZER(propertyMapper, Addressbook, Name, name); |
184 | } | 179 | } |
185 | 180 | ||
186 | void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) | 181 | void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) |
@@ -191,26 +186,24 @@ void TypeImplementation<Addressbook>::configure(IndexPropertyMapper &) | |||
191 | 186 | ||
192 | void TypeImplementation<Event>::configure(TypeIndex &index) | 187 | void TypeImplementation<Event>::configure(TypeIndex &index) |
193 | { | 188 | { |
194 | index.addProperty<QByteArray>(Event::Uid::name); | 189 | EventIndexConfig::configure(index); |
195 | } | 190 | } |
196 | 191 | ||
197 | void TypeImplementation<Event>::configure(ReadPropertyMapper<Buffer> &propertyMapper) | 192 | QMap<QByteArray, int> TypeImplementation<Event>::typeDatabases() |
198 | { | 193 | { |
199 | propertyMapper.addMapping<Event::Summary, Buffer>(&Buffer::summary); | 194 | return merge(QMap<QByteArray, int>{{QByteArray{Event::name} + ".main", 0}}, EventIndexConfig::databases()); |
200 | propertyMapper.addMapping<Event::Description, Buffer>(&Buffer::description); | ||
201 | propertyMapper.addMapping<Event::Uid, Buffer>(&Buffer::uid); | ||
202 | propertyMapper.addMapping<Event::Attachment, Buffer>(&Buffer::attachment); | ||
203 | } | 195 | } |
204 | 196 | ||
205 | void TypeImplementation<Event>::configure(WritePropertyMapper<BufferBuilder> &propertyMapper) | 197 | void TypeImplementation<Event>::configure(PropertyMapper &propertyMapper) |
206 | { | 198 | { |
207 | propertyMapper.addMapping<Event::Summary>(&BufferBuilder::add_summary); | 199 | SINK_REGISTER_SERIALIZER(propertyMapper, Event, Summary, summary); |
208 | propertyMapper.addMapping<Event::Description>(&BufferBuilder::add_description); | 200 | SINK_REGISTER_SERIALIZER(propertyMapper, Event, Description, description); |
209 | propertyMapper.addMapping<Event::Uid>(&BufferBuilder::add_uid); | 201 | SINK_REGISTER_SERIALIZER(propertyMapper, Event, Uid, uid); |
210 | propertyMapper.addMapping<Event::Attachment>(&BufferBuilder::add_attachment); | 202 | SINK_REGISTER_SERIALIZER(propertyMapper, Event, Attachment, attachment); |
211 | } | 203 | } |
212 | 204 | ||
213 | void TypeImplementation<Event>::configure(IndexPropertyMapper &) | 205 | void TypeImplementation<Event>::configure(IndexPropertyMapper &) |
214 | { | 206 | { |
215 | 207 | ||
216 | } | 208 | } |
209 | |||