Skip to content

Commit 0b334b6

Browse files
committed
agent: FromField/ToField for SimplexNameInfo
Stored as TEXT via decodeLatin1 . strEncode and decoded via fromTextField_ $ eitherToMaybe . strDecode . encodeUtf8 — the established pattern for typed TEXT columns in this codebase (see RcvSwitchStatus, SndSwitchStatus, RatchetSyncState at Agent/Protocol.hs:614-647). Lets simplex-chat carry the type directly in DB tuples without a per-call decode helper.
1 parent a0410d0 commit 0b334b6

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

src/Simplex/Messaging/SimplexName.hs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ import Data.Char (isDigit)
2525
import Data.Functor (($>))
2626
import Data.Text (Text)
2727
import qualified Data.Text as T
28-
import Data.Text.Encoding (encodeUtf8)
28+
import Data.Text.Encoding (decodeLatin1, encodeUtf8)
29+
import Simplex.Messaging.Agent.Store.DB (FromField (..), ToField (..), fromTextField_)
2930
import Simplex.Messaging.Encoding.String
3031
import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, enumJSON)
31-
import Simplex.Messaging.Util (safeDecodeUtf8, (<$?>))
32+
import Simplex.Messaging.Util (eitherToMaybe, safeDecodeUtf8, (<$?>))
3233

3334
data SimplexNameInfo = SimplexNameInfo
3435
{ nameType :: SimplexNameType,
@@ -109,6 +110,10 @@ shortNameInfoStr = \case
109110
NTPublicGroup -> "#"
110111
NTContact -> "@"
111112

113+
instance ToField SimplexNameInfo where toField = toField . decodeLatin1 . strEncode
114+
115+
instance FromField SimplexNameInfo where fromField = fromTextField_ $ eitherToMaybe . strDecode . encodeUtf8
116+
112117
$(J.deriveJSON (enumJSON $ dropPrefix "TLD") ''SimplexTLD)
113118

114119
$(J.deriveJSON (enumJSON $ dropPrefix "NT") ''SimplexNameType)

0 commit comments

Comments
 (0)