aboutsummaryrefslogtreecommitdiff
path: root/lib/models/guild/guild_t.ml
blob: 4445ce2a49c79502b9fd93b427b59e5abdc03249 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
open Core

type unavailable = {
    id: Guild_id_t.t;
    unavailable: bool [@default false];
} [@@deriving sexp, yojson]

type pre = {
    id: Guild_id_t.t;
    name: string;
    icon: string option [@default None];
    splash: string option [@default None];
    owner_id: User_id_t.t;
    region: string;
    afk_channel_id: Channel_id_t.t option [@default None];
    afk_timeout: int;
    embed_enabled: bool [@default false];
    embed_channel_id: Channel_id_t.t option [@default None];
    verification_level: int;
    default_message_notifications: int;
    explicit_content_filter: int;
    roles: Role_t.role list;
    emojis: Emoji.t list;
    features: string list;
    mfa_level: int;
    application_id: Snowflake.t option [@default None];
    widget_enabled: bool [@default false];
    widget_channel_id: Channel_id_t.t option [@default None];
    system_channel_id: Channel_id_t.t option [@default None];
    large: bool [@default false];
    member_count: int option [@default None];
    members: Member_t.member list [@default []];
    channels: Channel_t.channel_wrapper list [@default []];
} [@@deriving sexp, yojson]

type t = {
    id: Guild_id_t.t;
    name: string;
    icon: string option [@default None];
    splash: string option [@default None];
    owner_id: User_id_t.t;
    region: string;
    afk_channel_id: Channel_id_t.t option [@default None];
    afk_timeout: int;
    embed_enabled: bool [@default false];
    embed_channel_id: Channel_id_t.t option [@default None];
    verification_level: int;
    default_message_notifications: int;
    explicit_content_filter: int;
    roles: Role_t.t list;
    emojis: Emoji.t list;
    features: string list;
    mfa_level: int;
    application_id: Snowflake.t option [@default None];
    widget_enabled: bool [@default false];
    widget_channel_id: Channel_id_t.t option [@default None];
    system_channel_id: Channel_id_t.t option [@default None];
    large: bool;
    member_count: int option [@default None];
    members: Member_t.t list;
    channels: Channel_t.t list;
} [@@deriving sexp, yojson]

let wrap ({id;name;icon;splash;owner_id;region;afk_channel_id;afk_timeout;embed_enabled;embed_channel_id;verification_level;default_message_notifications;explicit_content_filter;roles;emojis;features;mfa_level;application_id;widget_enabled;widget_channel_id;system_channel_id;large;member_count;members;channels}:pre) =
    let `Guild_id id = id in
    let roles = List.map ~f:(Role_t.wrap ~guild_id:id) roles in
    let members = List.map ~f:(Member_t.wrap ~guild_id:id) members in
    let channels = List.map ~f:Channel_t.wrap channels in
    {id = `Guild_id id;name;icon;splash;owner_id;region;afk_channel_id;afk_timeout;embed_enabled;embed_channel_id;verification_level;default_message_notifications;explicit_content_filter;roles;emojis;features;mfa_level;application_id;widget_enabled;widget_channel_id;system_channel_id;large;member_count;members;channels}

let get_id guild = let `Guild_id id = guild.id in id