-module(telega@models@user). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([decode/1, encode/1]). -export_type([user/0]). -type user() :: {user, integer(), boolean(), binary(), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(binary()), gleam@option:option(boolean()), gleam@option:option(boolean())}. -spec decode(gleam@dynamic:dynamic_()) -> {ok, user()} | {error, list(gleam@dynamic:decode_error())}. decode(Json) -> _pipe = Json, (gleam@dynamic:decode8( fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7) -> {user, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7} end, gleam@dynamic:field(<<"id"/utf8>>, fun gleam@dynamic:int/1), gleam@dynamic:field(<<"is_bot"/utf8>>, fun gleam@dynamic:bool/1), gleam@dynamic:field(<<"first_name"/utf8>>, fun gleam@dynamic:string/1), gleam@dynamic:optional_field( <<"last_name"/utf8>>, fun gleam@dynamic:string/1 ), gleam@dynamic:optional_field( <<"username"/utf8>>, fun gleam@dynamic:string/1 ), gleam@dynamic:optional_field( <<"language_code"/utf8>>, fun gleam@dynamic:string/1 ), gleam@dynamic:optional_field( <<"is_premium"/utf8>>, fun gleam@dynamic:bool/1 ), gleam@dynamic:optional_field( <<"added_to_attachment_menu"/utf8>>, fun gleam@dynamic:bool/1 ) ))(_pipe). -spec encode(user()) -> gleam@json:json(). encode(User) -> Id = [{<<"id"/utf8>>, gleam@json:int(erlang:element(2, User))}], Is_bot = [{<<"is_bot"/utf8>>, gleam@json:bool(erlang:element(3, User))}], First_name = [{<<"first_name"/utf8>>, gleam@json:string(erlang:element(4, User))}], Last_name = telega@models@common:option_to_json_object_list( erlang:element(5, User), <<"last_name"/utf8>>, fun gleam@json:string/1 ), Username = telega@models@common:option_to_json_object_list( erlang:element(6, User), <<"username"/utf8>>, fun gleam@json:string/1 ), Language_code = telega@models@common:option_to_json_object_list( erlang:element(7, User), <<"language_code"/utf8>>, fun gleam@json:string/1 ), Is_premium = telega@models@common:option_to_json_object_list( erlang:element(8, User), <<"is_premium"/utf8>>, fun gleam@json:bool/1 ), Added_to_attachment_menu = telega@models@common:option_to_json_object_list( erlang:element(9, User), <<"added_to_attachment_menu"/utf8>>, fun gleam@json:bool/1 ), _pipe = [Id, Is_bot, First_name, Last_name, Username, Language_code, Is_premium, Added_to_attachment_menu], _pipe@1 = gleam@list:concat(_pipe), gleam@json:object(_pipe@1).