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).
|