aboutsummaryrefslogtreecommitdiff
path: root/server/src/jchat_dev.erl
blob: 6178c20605bb50f79955fd2dce728e15834b0662 (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
-module(jchat_dev).

-export([seed_data/0, create_sample_conversations/0]).

-include("jchat.hrl").

%% Create sample data for development/testing
seed_data() ->
    create_sample_users(),
    create_sample_conversations(),
    ok.

%% Create sample users
create_sample_users() ->
    Users = [
        {<<"user1">>, <<"Alice">>},
        {<<"user2">>, <<"Bob">>},  
        {<<"user3">>, <<"Charlie">>}
    ],
    
    lists:foreach(fun({UserId, Username}) ->
        jchat_db:create_user(UserId, #{
            <<"username">> => Username
        })
    end, Users).

%% Create sample conversations
create_sample_conversations() ->
    % Conversation 1: General chat
    Conv1Id = jchat_utils:generate_id(),
    jchat_db:create_conversation(Conv1Id, #{
        title => <<"General Chat">>,
        description => <<"General discussion for everyone">>,
        is_archived => false,
        is_muted => false,
        participant_ids => [<<"user1">>, <<"user2">>, <<"user3">>],
        metadata => #{}
    }),
    
    % Add some messages to conversation 1
    create_sample_messages(Conv1Id, [
        {<<"user1">>, <<"Hello everyone! 👋">>},
        {<<"user2">>, <<"Hey Alice! How's it going?">>},
        {<<"user3">>, <<"Good morning all!">>}
    ]),
    
    % Conversation 2: Project discussion
    Conv2Id = jchat_utils:generate_id(),
    jchat_db:create_conversation(Conv2Id, #{
        title => <<"JCHAT Project">>,
        description => <<"Discussion about the JCHAT implementation">>,
        is_archived => false,
        is_muted => false,
        participant_ids => [<<"user1">>, <<"user2">>],
        metadata => #{}
    }),
    
    % Add some messages to conversation 2
    create_sample_messages(Conv2Id, [
        {<<"user1">>, <<"The server is working great now!">>},
        {<<"user2">>, <<"Awesome! Ready to test the client integration.">>}
    ]),
    
    ok.

%% Helper to create sample messages
create_sample_messages(ConversationId, Messages) ->
    lists:foldl(fun({SenderId, Body}, N) ->
        MessageId = jchat_utils:generate_id(),
        jchat_db:create_message(MessageId, #{
            conversation_id => ConversationId,
            sender_id => SenderId,
            body => Body,
            body_type => <<"text/plain">>,
            attachments => null,
            reply_to_message_id => null,
            is_system_message => false,
            metadata => #{}
        }),
        
        % Update conversation with last message info
        jchat_db:update_conversation(ConversationId, #{
            last_message_id => MessageId,
            message_count => N + 1
        }),
        
        N + 1
    end, 0, Messages).