Skip to content

Handle recursive objects by wrapping them in a newtype#306

Merged
wolfadex merged 1 commit into
mainfrom
recursive-types
May 9, 2026
Merged

Handle recursive objects by wrapping them in a newtype#306
wolfadex merged 1 commit into
mainfrom
recursive-types

Conversation

@miniBill
Copy link
Copy Markdown
Collaborator

@miniBill miniBill commented May 9, 2026

No description provided.

@github-actions

This comment was marked as outdated.

@miniBill miniBill force-pushed the recursive-types branch from 0b264b5 to 1b5582f Compare May 9, 2026 16:17
@github-actions

This comment was marked as outdated.

@miniBill miniBill force-pushed the recursive-types branch from f743e67 to f94e0c5 Compare May 9, 2026 16:26
@github-actions

This comment was marked as outdated.

@miniBill miniBill force-pushed the recursive-types branch from f94e0c5 to bc3556e Compare May 9, 2026 16:28
@github-actions

This comment was marked as outdated.

@miniBill

This comment was marked as outdated.

@miniBill miniBill force-pushed the recursive-types branch from bc3556e to fd6b282 Compare May 9, 2026 16:37
@github-actions

This comment was marked as outdated.

@miniBill miniBill force-pushed the recursive-types branch from fd6b282 to f8e1818 Compare May 9, 2026 16:40
@github-actions

This comment was marked as outdated.

@miniBill miniBill force-pushed the recursive-types branch from f8e1818 to 365a631 Compare May 9, 2026 17:16
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

diff --ignore-all-space --minimal --new-file --recursive main/cli/generated/Recursive/Json.elm branch/cli/generated/Recursive/Json.elm
0a1,63
> module Recursive.Json exposing
>     ( encodeRecursive
>     , decodeRecursive
>     )
> 
> {-|
> 
> 
> ## Encoders
> 
> @docs encodeRecursive
> 
> 
> ## Decoders
> 
> @docs decodeRecursive
> 
> -}
> 
> import Date
> import Json.Decode
> import Json.Encode
> import OpenApi.Common
> import Recursive.Types
> 
> 
> encodeRecursive : Recursive.Types.Recursive -> Json.Encode.Value
> encodeRecursive (Recursive.Types.Recursive val) =
>     Json.Encode.object
>         (List.filterMap
>             Basics.identity
>             [ Maybe.map
>                 (\mapUnpack ->
>                     ( "date", OpenApi.Common.encodeStringDate mapUnpack )
>                 )
>                 val.date
>             , Maybe.map
>                 (\mapUnpack -> ( "parent", encodeRecursive mapUnpack ))
>                 val.parent
>             ]
>         )
> 
> 
> decodeRecursive : Json.Decode.Decoder Recursive.Types.Recursive
> decodeRecursive =
>     Json.Decode.map
>         Recursive.Types.Recursive
>         (Json.Decode.lazy
>             (\lazyUnpack ->
>                 Json.Decode.succeed
>                     (\date parent -> { date = date, parent = parent })
>                     |> OpenApi.Common.jsonDecodeAndMap
>                         (OpenApi.Common.decodeOptionalField
>                             "date"
>                             OpenApi.Common.decodeStringDate
>                         )
>                     |> OpenApi.Common.jsonDecodeAndMap
>                         (OpenApi.Common.decodeOptionalField
>                             "parent"
>                             decodeRecursive
>                         )
>             )
>         )
diff --ignore-all-space --minimal --new-file --recursive main/cli/generated/Recursive/Types.elm branch/cli/generated/Recursive/Types.elm
0a1,21
> module Recursive.Types exposing (Recursive(..))
> 
> {-|
> 
> 
> ## Aliases
> 
> @docs Recursive
> 
> -}
> 
> import Date
> 
> 
> {-| Recursive type
> 
>   - parent: Tag information
> 
> -}
> type Recursive
>     = Recursive { date : Maybe Date.Date, parent : Maybe Recursive }
diff --ignore-all-space --minimal --new-file --recursive main/cli/generated/TelegramBotApi/Json.elm branch/cli/generated/TelegramBotApi/Json.elm
4350c4350
< encodeMessage rec =
---
> encodeMessage (TelegramBotApi.Types.Message val) =
4356c4356
<                 rec.animation
---
>                 val.animation
4359c4359
<                 rec.audio
---
>                 val.audio
4364c4364
<                 rec.author_signature
---
>                 val.author_signature
4369c4369
<                 rec.boost_added
---
>                 val.boost_added
4374c4374
<                 rec.business_connection_id
---
>                 val.business_connection_id
4377c4377
<                 rec.caption
---
>                 val.caption
4384c4384
<                 rec.caption_entities
---
>                 val.caption_entities
4389,4390c4389,4390
<                 rec.channel_chat_created
<             , Just ( "chat", encodeChat rec.chat )
---
>                 val.channel_chat_created
>             , Just ( "chat", encodeChat val.chat )
4395c4395
<                 rec.chat_background_set
---
>                 val.chat_background_set
4398c4398
<                 rec.chat_shared
---
>                 val.chat_shared
4401c4401
<                 rec.checklist
---
>                 val.checklist
4408c4408
<                 rec.checklist_tasks_added
---
>                 val.checklist_tasks_added
4415c4415
<                 rec.checklist_tasks_done
---
>                 val.checklist_tasks_done
4420c4420
<                 rec.connected_website
---
>                 val.connected_website
4423,4424c4423,4424
<                 rec.contact
<             , Just ( "date", Json.Encode.int rec.date )
---
>                 val.contact
>             , Just ( "date", Json.Encode.int val.date )
4429c4429
<                 rec.delete_chat_photo
---
>                 val.delete_chat_photo
4432c4432
<                 rec.dice
---
>                 val.dice
4439c4439
<                 rec.direct_message_price_changed
---
>                 val.direct_message_price_changed
4446c4446
<                 rec.direct_messages_topic
---
>                 val.direct_messages_topic
4449c4449
<                 rec.document
---
>                 val.document
4452c4452
<                 rec.edit_date
---
>                 val.edit_date
4455c4455
<                 rec.effect_id
---
>                 val.effect_id
4462c4462
<                 rec.entities
---
>                 val.entities
4467c4467
<                 rec.external_reply
---
>                 val.external_reply
4472c4472
<                 rec.forum_topic_closed
---
>                 val.forum_topic_closed
4477c4477
<                 rec.forum_topic_created
---
>                 val.forum_topic_created
4482c4482
<                 rec.forum_topic_edited
---
>                 val.forum_topic_edited
4489c4489
<                 rec.forum_topic_reopened
---
>                 val.forum_topic_reopened
4494c4494
<                 rec.forward_origin
---
>                 val.forward_origin
4497c4497
<                 rec.from
---
>                 val.from
4500c4500
<                 rec.game
---
>                 val.game
4507c4507
<                 rec.general_forum_topic_hidden
---
>                 val.general_forum_topic_hidden
4514c4514
<                 rec.general_forum_topic_unhidden
---
>                 val.general_forum_topic_unhidden
4517c4517
<                 rec.gift
---
>                 val.gift
4522c4522
<                 rec.gift_upgrade_sent
---
>                 val.gift_upgrade_sent
4525c4525
<                 rec.giveaway
---
>                 val.giveaway
4530c4530
<                 rec.giveaway_completed
---
>                 val.giveaway_completed
4535c4535
<                 rec.giveaway_created
---
>                 val.giveaway_created
4540c4540
<                 rec.giveaway_winners
---
>                 val.giveaway_winners
4545c4545
<                 rec.group_chat_created
---
>                 val.group_chat_created
4550c4550
<                 rec.has_media_spoiler
---
>                 val.has_media_spoiler
4555c4555
<                 rec.has_protected_content
---
>                 val.has_protected_content
4558c4558
<                 rec.invoice
---
>                 val.invoice
4563c4563
<                 rec.is_automatic_forward
---
>                 val.is_automatic_forward
4568c4568
<                 rec.is_from_offline
---
>                 val.is_from_offline
4571c4571
<                 rec.is_paid_post
---
>                 val.is_paid_post
4576c4576
<                 rec.is_topic_message
---
>                 val.is_topic_message
4579c4579
<                 rec.left_chat_member
---
>                 val.left_chat_member
4586c4586
<                 rec.link_preview_options
---
>                 val.link_preview_options
4589c4589
<                 rec.location
---
>                 val.location
4594c4594
<                 rec.media_group_id
---
>                 val.media_group_id
4601,4602c4601,4602
<                 rec.message_auto_delete_timer_changed
<             , Just ( "message_id", Json.Encode.int rec.message_id )
---
>                 val.message_auto_delete_timer_changed
>             , Just ( "message_id", Json.Encode.int val.message_id )
4607c4607
<                 rec.message_thread_id
---
>                 val.message_thread_id
4612c4612
<                 rec.migrate_from_chat_id
---
>                 val.migrate_from_chat_id
4617c4617
<                 rec.migrate_to_chat_id
---
>                 val.migrate_to_chat_id
4624c4624
<                 rec.new_chat_members
---
>                 val.new_chat_members
4631c4631
<                 rec.new_chat_photo
---
>                 val.new_chat_photo
4636c4636
<                 rec.new_chat_title
---
>                 val.new_chat_title
4639c4639
<                 rec.paid_media
---
>                 val.paid_media
4646c4646
<                 rec.paid_message_price_changed
---
>                 val.paid_message_price_changed
4649c4649
<                 rec.paid_star_count
---
>                 val.paid_star_count
4654c4654
<                 rec.passport_data
---
>                 val.passport_data
4659c4659
<                 rec.photo
---
>                 val.photo
4666c4666
<                 rec.pinned_message
---
>                 val.pinned_message
4669c4669
<                 rec.poll
---
>                 val.poll
4676c4676
<                 rec.proximity_alert_triggered
---
>                 val.proximity_alert_triggered
4679c4679
<                 rec.quote
---
>                 val.quote
4684c4684
<                 rec.refunded_payment
---
>                 val.refunded_payment
4689c4689
<                 rec.reply_markup
---
>                 val.reply_markup
4694c4694
<                 rec.reply_to_checklist_task_id
---
>                 val.reply_to_checklist_task_id
4697c4697
<                 rec.reply_to_message
---
>                 val.reply_to_message
4700c4700
<                 rec.reply_to_story
---
>                 val.reply_to_story
4705c4705
<                 rec.sender_boost_count
---
>                 val.sender_boost_count
4708c4708
<                 rec.sender_business_bot
---
>                 val.sender_business_bot
4711c4711
<                 rec.sender_chat
---
>                 val.sender_chat
4716c4716
<                 rec.show_caption_above_media
---
>                 val.show_caption_above_media
4719c4719
<                 rec.sticker
---
>                 val.sticker
4722c4722
<                 rec.story
---
>                 val.story
4727c4727
<                 rec.successful_payment
---
>                 val.successful_payment
4734c4734
<                 rec.suggested_post_approval_failed
---
>                 val.suggested_post_approval_failed
4741c4741
<                 rec.suggested_post_approved
---
>                 val.suggested_post_approved
4748c4748
<                 rec.suggested_post_declined
---
>                 val.suggested_post_declined
4753c4753
<                 rec.suggested_post_info
---
>                 val.suggested_post_info
4758c4758
<                 rec.suggested_post_paid
---
>                 val.suggested_post_paid
4765c4765
<                 rec.suggested_post_refunded
---
>                 val.suggested_post_refunded
4770c4770
<                 rec.supergroup_chat_created
---
>                 val.supergroup_chat_created
4773c4773
<                 rec.text
---
>                 val.text
4778c4778
<                 rec.unique_gift
---
>                 val.unique_gift
4781c4781
<                 rec.users_shared
---
>                 val.users_shared
4784c4784
<                 rec.venue
---
>                 val.venue
4787c4787
<                 rec.via_bot
---
>                 val.via_bot
4790c4790
<                 rec.video
---
>                 val.video
4795c4795
<                 rec.video_chat_ended
---
>                 val.video_chat_ended
4802c4802
<                 rec.video_chat_participants_invited
---
>                 val.video_chat_participants_invited
4809c4809
<                 rec.video_chat_scheduled
---
>                 val.video_chat_scheduled
4814c4814
<                 rec.video_chat_started
---
>                 val.video_chat_started
4817c4817
<                 rec.video_note
---
>                 val.video_note
4820c4820
<                 rec.voice
---
>                 val.voice
4823c4823
<                 rec.web_app_data
---
>                 val.web_app_data
4830c4830
<                 rec.write_access_allowed
---
>                 val.write_access_allowed
13288a13289,13292
>     Json.Decode.map
>         TelegramBotApi.Types.Message
>         (Json.Decode.lazy
>             (\lazyUnpack ->
13310c13314,13315
<             , direct_message_price_changed = direct_message_price_changed
---
>                         , direct_message_price_changed =
>                             direct_message_price_changed
13324,13325c13329,13332
<             , general_forum_topic_hidden = general_forum_topic_hidden
<             , general_forum_topic_unhidden = general_forum_topic_unhidden
---
>                         , general_forum_topic_hidden =
>                             general_forum_topic_hidden
>                         , general_forum_topic_unhidden =
>                             general_forum_topic_unhidden
13354c13361,13362
<             , paid_message_price_changed = paid_message_price_changed
---
>                         , paid_message_price_changed =
>                             paid_message_price_changed
13360c13368,13369
<             , proximity_alert_triggered = proximity_alert_triggered
---
>                         , proximity_alert_triggered =
>                             proximity_alert_triggered
13364c13373,13374
<             , reply_to_checklist_task_id = reply_to_checklist_task_id
---
>                         , reply_to_checklist_task_id =
>                             reply_to_checklist_task_id
13374c13384,13385
<             , suggested_post_approval_failed = suggested_post_approval_failed
---
>                         , suggested_post_approval_failed =
>                             suggested_post_approval_failed
13388c13399,13400
<             , video_chat_participants_invited = video_chat_participants_invited
---
>                         , video_chat_participants_invited =
>                             video_chat_participants_invited
13398c13410,13413
<             (OpenApi.Common.decodeOptionalField "animation" decodeAnimation)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "animation"
>                             decodeAnimation
>                         )
13400c13415,13418
<             (OpenApi.Common.decodeOptionalField "audio" decodeAudio)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "audio"
>                             decodeAudio
>                         )
13417c13435,13438
<             (OpenApi.Common.decodeOptionalField "caption" Json.Decode.string)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "caption"
>                             Json.Decode.string
>                         )
13428c13449,13450
<         |> OpenApi.Common.jsonDecodeAndMap (Json.Decode.field "chat" decodeChat)
---
>                     |> OpenApi.Common.jsonDecodeAndMap
>                         (Json.Decode.field "chat" decodeChat)
13440c13462,13465
<             (OpenApi.Common.decodeOptionalField "checklist" decodeChecklist)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "checklist"
>                             decodeChecklist
>                         )
13457c13482,13485
<             (OpenApi.Common.decodeOptionalField "contact" decodeContact)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "contact"
>                             decodeContact
>                         )
13466c13494,13497
<             (OpenApi.Common.decodeOptionalField "dice" decodeDice)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "dice"
>                             decodeDice
>                         )
13478c13509,13512
<             (OpenApi.Common.decodeOptionalField "document" decodeDocument)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "document"
>                             decodeDocument
>                         )
13480c13514,13517
<             (OpenApi.Common.decodeOptionalField "edit_date" Json.Decode.int)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "edit_date"
>                             Json.Decode.int
>                         )
13522c13559,13562
<             (OpenApi.Common.decodeOptionalField "from" decodeUser)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "from"
>                             decodeUser
>                         )
13524c13564,13567
<             (OpenApi.Common.decodeOptionalField "game" decodeGame)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "game"
>                             decodeGame
>                         )
13536c13579,13582
<             (OpenApi.Common.decodeOptionalField "gift" decodeGiftInfo)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "gift"
>                             decodeGiftInfo
>                         )
13543c13589,13592
<             (OpenApi.Common.decodeOptionalField "giveaway" decodeGiveaway)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "giveaway"
>                             decodeGiveaway
>                         )
13575c13624,13627
<             (OpenApi.Common.decodeOptionalField "invoice" decodeInvoice)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "invoice"
>                             decodeInvoice
>                         )
13597c13649,13652
<             (OpenApi.Common.decodeOptionalField "left_chat_member" decodeUser)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "left_chat_member"
>                             decodeUser
>                         )
13604c13659,13662
<             (OpenApi.Common.decodeOptionalField "location" decodeLocation)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "location"
>                             decodeLocation
>                         )
13678c13736,13739
<             (OpenApi.Common.decodeOptionalField "poll" decodePoll)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "poll"
>                             decodePoll
>                         )
13685c13746,13749
<             (OpenApi.Common.decodeOptionalField "quote" decodeTextQuote)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "quote"
>                             decodeTextQuote
>                         )
13707c13771,13774
<             (OpenApi.Common.decodeOptionalField "reply_to_story" decodeStory)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "reply_to_story"
>                             decodeStory
>                         )
13719c13786,13789
<             (OpenApi.Common.decodeOptionalField "sender_chat" decodeChat)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "sender_chat"
>                             decodeChat
>                         )
13726c13796,13799
<             (OpenApi.Common.decodeOptionalField "sticker" decodeSticker)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "sticker"
>                             decodeSticker
>                         )
13728c13801,13804
<             (OpenApi.Common.decodeOptionalField "story" decodeStory)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "story"
>                             decodeStory
>                         )
13770c13846,13849
<             (OpenApi.Common.decodeOptionalField "text" Json.Decode.string)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "text"
>                             Json.Decode.string
>                         )
13782c13861,13864
<             (OpenApi.Common.decodeOptionalField "venue" decodeVenue)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "venue"
>                             decodeVenue
>                         )
13784c13866,13869
<             (OpenApi.Common.decodeOptionalField "via_bot" decodeUser)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "via_bot"
>                             decodeUser
>                         )
13786c13871,13874
<             (OpenApi.Common.decodeOptionalField "video" decodeVideo)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "video"
>                             decodeVideo
>                         )
13808c13896,13899
<             (OpenApi.Common.decodeOptionalField "video_note" decodeVideoNote)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "video_note"
>                             decodeVideoNote
>                         )
13810c13901,13904
<             (OpenApi.Common.decodeOptionalField "voice" decodeVoice)
---
>                         (OpenApi.Common.decodeOptionalField
>                             "voice"
>                             decodeVoice
>                         )
13820a13915,13916
>             )
>         )
diff --ignore-all-space --minimal --new-file --recursive main/cli/generated/TelegramBotApi/Types.elm branch/cli/generated/TelegramBotApi/Types.elm
29c29
<     , MenuButtonWebApp, Message, MessageAutoDeleteTimerChanged, MessageEntity, MessageId, MessageOrigin
---
>     , MenuButtonWebApp, Message(..), MessageAutoDeleteTimerChanged, MessageEntity, MessageId, MessageOrigin
3087c3087,3088
< type alias Message =
---
> type Message
>     = Message
3141c3142,3143
<     , message_auto_delete_timer_changed : Maybe MessageAutoDeleteTimerChanged
---
>         , message_auto_delete_timer_changed :
>             Maybe MessageAutoDeleteTimerChanged

@wolfadex wolfadex merged commit 9c25f68 into main May 9, 2026
2 checks passed
@wolfadex wolfadex deleted the recursive-types branch May 9, 2026 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants