Fauna v10 .NET/C# Driver 0.2.0-beta
 
Loading...
Searching...
No Matches
StructSerializers.cs
Go to the documentation of this file.
1using Fauna.Mapping;
2using Fauna.Types;
3
4namespace Fauna.Serialization;
5
6
7internal class StringSerializer : BaseSerializer<string?>
8{
9 public override string? Deserialize(MappingContext ctx, ref Utf8FaunaReader reader) =>
10 reader.CurrentTokenType switch
11 {
12 TokenType.Null => null,
13 TokenType.String => reader.GetString(),
14 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
15 };
16
17 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
18 {
19 switch (o)
20 {
21 case null:
22 writer.WriteNullValue();
23 break;
24 case string s:
25 writer.WriteStringValue(s);
26 break;
27 default:
28 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
29 }
30 }
31}
32
33internal class ByteSerializer : BaseSerializer<byte>
34{
35 public override byte Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
36 reader.CurrentTokenType switch
37 {
38 TokenType.Int => reader.GetByte(),
39 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
40 };
41
42 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
43 {
44 switch (o)
45 {
46 case null:
47 writer.WriteNullValue();
48 break;
49 case byte i:
50 writer.WriteIntValue(i);
51 break;
52 default:
53 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
54 }
55 }
56}
57
58internal class SByteSerializer : BaseSerializer<sbyte>
59{
60 public override sbyte Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
61 reader.CurrentTokenType switch
62 {
63 TokenType.Int => reader.GetUnsignedByte(),
64 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
65 };
66
67 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
68 {
69 switch (o)
70 {
71 case null:
72 writer.WriteNullValue();
73 break;
74 case sbyte i:
75 writer.WriteIntValue(i);
76 break;
77 default:
78 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
79 }
80 }
81}
82
83
84internal class ShortSerializer : BaseSerializer<short>
85{
86 public override short Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
87 reader.CurrentTokenType switch
88 {
89 TokenType.Int => reader.GetShort(),
90 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
91 };
92
93 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
94 {
95 switch (o)
96 {
97 case null:
98 writer.WriteNullValue();
99 break;
100 case short i:
101 writer.WriteIntValue(i);
102 break;
103 default:
104 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
105 }
106 }
107}
108
109internal class UShortSerializer : BaseSerializer<ushort>
110{
111 public override ushort Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
112 reader.CurrentTokenType switch
113 {
114 TokenType.Int => reader.GetUnsignedShort(),
115 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
116 };
117
118 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
119 {
120 switch (o)
121 {
122 case null:
123 writer.WriteNullValue();
124 break;
125 case ushort i:
126 writer.WriteIntValue(i);
127 break;
128 default:
129 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
130 }
131 }
132}
133
134internal class IntSerializer : BaseSerializer<int>
135{
136 public override int Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
137 reader.CurrentTokenType switch
138 {
139 TokenType.Int => reader.GetInt(),
140 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
141 };
142
143 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
144 {
145 switch (o)
146 {
147 case null:
148 writer.WriteNullValue();
149 break;
150 case int i:
151 writer.WriteIntValue(i);
152 break;
153 default:
154 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
155 }
156 }
157}
158
159internal class UIntSerializer : BaseSerializer<uint>
160{
161 public override uint Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
162 reader.CurrentTokenType switch
163 {
164 TokenType.Int or TokenType.Long => reader.GetUnsignedInt(),
165 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
166 };
167
168 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
169 {
170 switch (o)
171 {
172 case null:
173 writer.WriteNullValue();
174 break;
175 case uint i:
176 writer.WriteLongValue(i);
177 break;
178 default:
179 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
180 }
181 }
182}
183
184internal class LongSerializer : BaseSerializer<long>
185{
186 public override long Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
187 reader.CurrentTokenType switch
188 {
189 TokenType.Int or TokenType.Long => reader.GetLong(),
190 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
191 };
192
193 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
194 {
195 switch (o)
196 {
197 case null:
198 writer.WriteNullValue();
199 break;
200 case long i:
201 writer.WriteLongValue(i);
202 break;
203 default:
204 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
205 }
206 }
207}
208
209internal class FloatSerializer : BaseSerializer<float>
210{
211 public override float Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
212 reader.CurrentTokenType switch
213 {
214 TokenType.Int or TokenType.Long or TokenType.Double => reader.GetFloat(),
215 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
216 };
217
218 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
219 {
220 switch (o)
221 {
222 case null:
223 writer.WriteNullValue();
224 break;
225 case float i:
226 writer.WriteDoubleValue(i);
227 break;
228 default:
229 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
230 }
231 }
232}
233
234internal class DoubleSerializer : BaseSerializer<double>
235{
236 public override double Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
237 reader.CurrentTokenType switch
238 {
239 TokenType.Int or TokenType.Long or TokenType.Double => reader.GetDouble(),
240 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
241 };
242
243 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
244 {
245 switch (o)
246 {
247 case null:
248 writer.WriteNullValue();
249 break;
250 case double i:
251 writer.WriteDoubleValue(i);
252 break;
253 default:
254 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
255 }
256 }
257}
258
259internal class BooleanSerializer : BaseSerializer<bool>
260{
261 public override bool Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
262 reader.CurrentTokenType switch
263 {
264 TokenType.True or TokenType.False => reader.GetBoolean(),
265 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
266 };
267
268 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
269 {
270 switch (o)
271 {
272 case null:
273 writer.WriteNullValue();
274 break;
275 case bool i:
276 writer.WriteBooleanValue(i);
277 break;
278 default:
279 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
280 }
281 }
282}
283
284internal class DateOnlySerializer : BaseSerializer<DateOnly>
285{
286 public override DateOnly Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
287 reader.CurrentTokenType switch
288 {
289 TokenType.Date => reader.GetDate(),
290 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
291 };
292
293 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
294 {
295 switch (o)
296 {
297 case null:
298 writer.WriteNullValue();
299 break;
300 case DateOnly i:
301 writer.WriteDateValue(i);
302 break;
303 default:
304 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
305 }
306 }
307}
308
309internal class DateTimeSerializer : BaseSerializer<DateTime>
310{
311 public override DateTime Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
312 reader.CurrentTokenType switch
313 {
314 TokenType.Time => reader.GetTime(),
315 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
316 };
317
318 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
319 {
320 switch (o)
321 {
322 case null:
323 writer.WriteNullValue();
324 break;
325 case DateTime i:
326 writer.WriteTimeValue(i);
327 break;
328 default:
329 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
330 }
331 }
332}
333
334internal class DateTimeOffsetSerializer : BaseSerializer<DateTimeOffset>
335{
336 public override DateTimeOffset Deserialize(MappingContext context, ref Utf8FaunaReader reader) =>
337 reader.CurrentTokenType switch
338 {
339 TokenType.Time => reader.GetTime(),
340 _ => throw new SerializationException(UnexpectedTokenExceptionMessage(reader.CurrentTokenType))
341 };
342
343 public override void Serialize(MappingContext context, Utf8FaunaWriter writer, object? o)
344 {
345 switch (o)
346 {
347 case null:
348 writer.WriteNullValue();
349 break;
350 case DateTimeOffset i:
351 writer.WriteTimeValue(i);
352 break;
353 default:
354 throw new SerializationException(UnsupportedSerializationTypeMessage(o.GetType()));
355 }
356 }
357}
A class representing the mapping context to be used during serialization and deserialization.
string UnexpectedTokenExceptionMessage(TokenType token)