Skip to content

Commit e5b083c

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 a0f974a commit e5b083c

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
@@ -27,10 +27,11 @@ import Data.Char (isDigit)
2727
import Data.Functor (($>))
2828
import Data.Text (Text)
2929
import qualified Data.Text as T
30-
import Data.Text.Encoding (encodeUtf8)
30+
import Data.Text.Encoding (decodeLatin1, encodeUtf8)
31+
import Simplex.Messaging.Agent.Store.DB (FromField (..), ToField (..), fromTextField_)
3132
import Simplex.Messaging.Encoding.String
3233
import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, enumJSON)
33-
import Simplex.Messaging.Util (safeDecodeUtf8, (<$?>))
34+
import Simplex.Messaging.Util (eitherToMaybe, safeDecodeUtf8, (<$?>))
3435

3536
data SimplexNameInfo = SimplexNameInfo
3637
{ nameType :: SimplexNameType,
@@ -123,6 +124,10 @@ shortNameInfoStr = \case
123124
NTPublicGroup -> "#"
124125
NTContact -> "@"
125126

127+
instance ToField SimplexNameInfo where toField = toField . decodeLatin1 . strEncode
128+
129+
instance FromField SimplexNameInfo where fromField = fromTextField_ $ eitherToMaybe . strDecode . encodeUtf8
130+
126131
$(J.deriveJSON (enumJSON $ dropPrefix "TLD") ''SimplexTLD)
127132

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

0 commit comments

Comments
 (0)