From b499169e93e9f7bdd0f877a3cdf0247ec495abe1 Mon Sep 17 00:00:00 2001 From: Matias Goldfeld <2000matu@gmail.com> Date: Thu, 28 Jan 2021 00:50:21 -0500 Subject: More Int64 refactors --- lib/models/channel/channel.ml | 15 ++++++--------- lib/models/channel/channel.mli | 2 +- lib/models/channel/message/message.ml | 4 ++-- lib/models/event_models.ml | 4 ++-- lib/models/guild/guild.ml | 6 +++--- lib/models/id/channel_id.ml | 15 ++++++--------- lib/models/id/channel_id.mli | 2 +- lib/models/id/channel_id_t.ml | 2 +- lib/models/id/guild_id.ml | 2 +- lib/models/id/guild_id_t.ml | 2 +- lib/models/id/user_id_t.ml | 2 +- lib/models/snowflake.ml | 8 ++++---- lib/models/snowflake.mli | 2 +- lib/models/user/user.ml | 4 ++-- 14 files changed, 32 insertions(+), 38 deletions(-) (limited to 'lib/models') diff --git a/lib/models/channel/channel.ml b/lib/models/channel/channel.ml index 47cf500..4d7b29d 100644 --- a/lib/models/channel/channel.ml +++ b/lib/models/channel/channel.ml @@ -33,16 +33,13 @@ let delete ch = let get_message ~id ch = Http.get_message (get_id ch) id -let get_messages ?(mode=`Around) ?id ?(limit=50) ch = +let get_messages ?(mode=`Around) ~id ?(limit=50) ch = let kind = match mode with - | `Around -> "around", limit - | `Before -> "before", limit - | `After -> "after", limit + | `Around -> "around", id + | `Before -> "before", id + | `After -> "after", id in - let id = match id with - | Some id -> id - | None -> raise No_message_found in - Http.get_messages (get_id ch) id kind + Http.get_messages (get_id ch) limit kind let broadcast_typing ch = Http.broadcast_typing (get_id ch) @@ -51,5 +48,5 @@ let get_pins ch = Http.get_pinned_messages (get_id ch) let bulk_delete msgs ch = - let msgs = `List (List.map ~f:(fun id -> `Int id) msgs) in + let msgs = `List (List.map ~f:(fun id -> `Intlit (Int64.to_string id)) msgs) in Http.bulk_delete (get_id ch) msgs \ No newline at end of file diff --git a/lib/models/channel/channel.mli b/lib/models/channel/channel.mli index 0d7431b..cb01533 100644 --- a/lib/models/channel/channel.mli +++ b/lib/models/channel/channel.mli @@ -36,7 +36,7 @@ val delete : t -> Channel_t.t Deferred.Or_error.t val get_message : id:Snowflake.t -> t -> Message_t.t Deferred.Or_error.t val get_messages : ?mode:[ `Before | `After | `Around ] -> - ?id:Snowflake.t -> + id:Snowflake.t -> ?limit:int -> t -> Message_t.t list Deferred.Or_error.t diff --git a/lib/models/channel/message/message.ml b/lib/models/channel/message/message.ml index 7f03638..a94d15e 100644 --- a/lib/models/channel/message/message.ml +++ b/lib/models/channel/message/message.ml @@ -6,7 +6,7 @@ let add_reaction msg (emoji:Emoji.t) = let `Message_id id = msg.id in let `Channel_id channel_id = msg.channel_id in let e = match emoji.id with - | Some i -> Printf.sprintf "%s:%d" emoji.name i + | Some i -> Printf.sprintf "%s:%Ld" emoji.name i | None -> emoji.name in Http.create_reaction channel_id id e @@ -17,7 +17,7 @@ let remove_reaction msg (emoji:Emoji.t) (user:User_t.t) = let `Channel_id channel_id = msg.channel_id in let `User_id user_id = user.id in let e = match emoji.id with - | Some i -> Printf.sprintf "%s:%d" emoji.name i + | Some i -> Printf.sprintf "%s:%Ld" emoji.name i | None -> emoji.name in Http.delete_reaction channel_id id e user_id diff --git a/lib/models/event_models.ml b/lib/models/event_models.ml index 40ff299..b9c417b 100644 --- a/lib/models/event_models.ml +++ b/lib/models/event_models.ml @@ -415,7 +415,7 @@ module GuildRoleDelete = struct if Cache.GuildMap.mem cache.guilds t.guild_id then let guilds = match Cache.GuildMap.find cache.guilds t.guild_id with | Some g -> - let roles = List.filter g.roles ~f:(fun r -> Role_id.get_id r.id <> Role_id.get_id t.role_id) in + let roles = List.filter g.roles ~f:(fun r -> Int64.(Role_id.get_id r.id <> Role_id.get_id t.role_id)) in let data = { g with roles } in Cache.GuildMap.set cache.guilds ~key:t.guild_id ~data | None -> cache.guilds in @@ -437,7 +437,7 @@ module GuildRoleUpdate = struct | Some g -> let `Guild_id guild_id = t.guild_id in let roles = List.map g.roles ~f:(fun r -> - if Role_id.get_id r.id = Role_id.get_id t.role.id then Role_t.wrap ~guild_id t.role else r) in + if Int64.(Role_id.get_id r.id = Role_id.get_id t.role.id) then Role_t.wrap ~guild_id t.role else r) in let data = { g with roles } in Cache.GuildMap.set cache.guilds ~key:t.guild_id ~data | None -> cache.guilds in diff --git a/lib/models/guild/guild.ml b/lib/models/guild/guild.ml index 95485a4..14861fe 100644 --- a/lib/models/guild/guild.ml +++ b/lib/models/guild/guild.ml @@ -89,7 +89,7 @@ let request_members guild = Http.get_members (get_id guild) let set_afk_channel ~id guild = Http.edit_guild (get_id guild) (`Assoc [ - ("afk_channel_id", `Int id); + ("afk_channel_id", `Intlit (Int64.to_string id)); ]) let set_afk_timeout ~timeout guild = Http.edit_guild (get_id guild) (`Assoc [ @@ -119,10 +119,10 @@ let get_member ~(id:User_id_t.t) guild = let get_channel ~(id:Channel_id_t.t) guild = let `Channel_id id = id in - match List.find ~f:(fun c -> Channel_t.get_id c = id) guild.channels with + match List.find ~f:(fun c -> Int64.(Channel_t.get_id c = id)) guild.channels with | Some c -> Deferred.Or_error.return c | None -> Http.get_channel id (* TODO add HTTP fallback *) let get_role ~(id:Role_id.t) guild = - List.find ~f:(fun r -> Role_id.get_id r.id = Role_id.get_id id) guild.roles + List.find ~f:(fun r -> Int64.(Role_id.get_id r.id = Role_id.get_id id)) guild.roles diff --git a/lib/models/id/channel_id.ml b/lib/models/id/channel_id.ml index 1ea7a46..7c62d84 100644 --- a/lib/models/id/channel_id.ml +++ b/lib/models/id/channel_id.ml @@ -33,16 +33,13 @@ let delete ch = let get_message ~id ch = Http.get_message (get_id ch) id -let get_messages ?(mode=`Around) ?id ?(limit=50) ch = +let get_messages ?(mode=`Around) ~id ?(limit=50) ch = let kind = match mode with - | `Around -> "around", limit - | `Before -> "before", limit - | `After -> "after", limit + | `Around -> "around", id + | `Before -> "before", id + | `After -> "after", id in - let id = match id with - | Some id -> id - | None -> raise No_message_found in - Http.get_messages (get_id ch) id kind + Http.get_messages (get_id ch) limit kind let broadcast_typing ch = Http.broadcast_typing (get_id ch) @@ -51,5 +48,5 @@ let get_pins ch = Http.get_pinned_messages (get_id ch) let bulk_delete msgs ch = - let msgs = `List (List.map ~f:(fun id -> `Int id) msgs) in + let msgs = `List (List.map ~f:(fun id -> `Intlit (Int64.to_string id)) msgs) in Http.bulk_delete (get_id ch) msgs \ No newline at end of file diff --git a/lib/models/id/channel_id.mli b/lib/models/id/channel_id.mli index 2dfff8f..5ecad0c 100644 --- a/lib/models/id/channel_id.mli +++ b/lib/models/id/channel_id.mli @@ -37,7 +37,7 @@ val delete : t -> Channel_t.t Deferred.Or_error.t val get_message : id:Snowflake.t -> t -> Message_t.t Deferred.Or_error.t val get_messages : ?mode:[ `Before | `After | `Around ] -> - ?id:Snowflake.t -> + id:Snowflake.t -> ?limit:int -> t -> Message_t.t list Deferred.Or_error.t diff --git a/lib/models/id/channel_id_t.ml b/lib/models/id/channel_id_t.ml index cea85e0..c6b80ec 100644 --- a/lib/models/id/channel_id_t.ml +++ b/lib/models/id/channel_id_t.ml @@ -2,7 +2,7 @@ open Core type t = [ `Channel_id of Snowflake.t ] [@@deriving sexp] -let compare (`Channel_id t) (`Channel_id t') = Int.compare t t' +let compare (`Channel_id t) (`Channel_id t') = Int64.compare t t' let of_yojson a : (t, string) result = match Snowflake.of_yojson a with diff --git a/lib/models/id/guild_id.ml b/lib/models/id/guild_id.ml index d4db185..1e0168f 100644 --- a/lib/models/id/guild_id.ml +++ b/lib/models/id/guild_id.ml @@ -82,7 +82,7 @@ let request_members guild = Http.get_members (get_id guild) let set_afk_channel ~id guild = Http.edit_guild (get_id guild) (`Assoc [ - ("afk_channel_id", `Int id); + ("afk_channel_id", `Intlit (Int64.to_string id)); ]) let set_afk_timeout ~timeout guild = Http.edit_guild (get_id guild) (`Assoc [ diff --git a/lib/models/id/guild_id_t.ml b/lib/models/id/guild_id_t.ml index a39c07d..b2fd202 100644 --- a/lib/models/id/guild_id_t.ml +++ b/lib/models/id/guild_id_t.ml @@ -2,7 +2,7 @@ open Core type t = [ `Guild_id of Snowflake.t ] [@@deriving sexp] -let compare (`Guild_id t) (`Guild_id t') = Int.compare t t' +let compare (`Guild_id t) (`Guild_id t') = Int64.compare t t' let of_yojson a : (t, string) result = match Snowflake.of_yojson a with diff --git a/lib/models/id/user_id_t.ml b/lib/models/id/user_id_t.ml index cf1634a..214fa14 100644 --- a/lib/models/id/user_id_t.ml +++ b/lib/models/id/user_id_t.ml @@ -2,7 +2,7 @@ open Core type t = [ `User_id of Snowflake.t ] [@@deriving sexp] -let compare (`User_id t) (`User_id t') = Int.compare t t' +let compare (`User_id t) (`User_id t') = Int64.compare t t' let of_yojson a : (t, string) result = match Snowflake.of_yojson a with diff --git a/lib/models/snowflake.ml b/lib/models/snowflake.ml index f228bd7..868b2b9 100644 --- a/lib/models/snowflake.ml +++ b/lib/models/snowflake.ml @@ -1,16 +1,16 @@ open Core -type t = Int.t [@@deriving sexp] +type t = int64 [@@deriving sexp] -let of_yojson_exn d = Yojson.Safe.Util.to_string d |> Int.of_string +let of_yojson_exn d = Yojson.Safe.Util.to_string d |> Int64.of_string let of_yojson d = try Ok (of_yojson_exn d) with Yojson.Safe.Util.Type_error (why,_) -> Error why -let to_yojson s : Yojson.Safe.t = `String (Int.to_string s) +let to_yojson s : Yojson.Safe.t = `String (Int64.to_string s) -let timestamp snowflake = Int64.(+) (Int64.of_int (snowflake lsr 22)) 1_420_070_400_000L +let timestamp snowflake = Int64.((snowflake lsr 22) + 1_420_070_400_000L) let time_of_t snowflake = let t = timestamp snowflake |> Int64.to_float in diff --git a/lib/models/snowflake.mli b/lib/models/snowflake.mli index 7d5cca8..fd9c597 100644 --- a/lib/models/snowflake.mli +++ b/lib/models/snowflake.mli @@ -1,6 +1,6 @@ open Core -type t = Int.t [@@deriving sexp, yojson { exn = true }] +type t = int64 [@@deriving sexp, yojson { exn = true }] (** Convert a snowflake into a {!Core.Time.t} *) val time_of_t : t -> Time.t diff --git a/lib/models/user/user.ml b/lib/models/user/user.ml index b8c3b25..0d76d23 100644 --- a/lib/models/user/user.ml +++ b/lib/models/user/user.ml @@ -6,10 +6,10 @@ let tag user = let mention user = let `User_id id = user.id in - Printf.sprintf "<@%d>" id + Printf.sprintf "<@%Ld>" id let default_avatar user = - let avatar = Int.of_string user.discriminator % 5 in + let avatar = Int64.(of_string user.discriminator % 5L) in Endpoints.cdn_default_avatar avatar let face user = -- cgit v1.2.3