|
|
- import '/utils/storage/database.dart';
- import '/models/conversations.dart';
-
- class ConversationUser{
- String id;
- String conversationId;
- String username;
- String associationKey;
- bool admin;
- ConversationUser({
- required this.id,
- required this.conversationId,
- required this.username,
- required this.associationKey,
- required this.admin,
- });
-
- factory ConversationUser.fromJson(Map<String, dynamic> json, String conversationId) {
- return ConversationUser(
- id: json['id'],
- conversationId: conversationId,
- username: json['username'],
- associationKey: json['association_key'],
- admin: json['admin'] == 'true',
- );
- }
-
- Map<String, dynamic> toMap() {
- return {
- 'id': id,
- 'conversation_id': conversationId,
- 'username': username,
- 'association_key': associationKey,
- 'admin': admin ? 1 : 0,
- };
- }
- }
-
- // A method that retrieves all the dogs from the dogs table.
- Future<List<ConversationUser>> getConversationUsers(Conversation conversation) async {
- final db = await getDatabaseConnection();
-
- final List<Map<String, dynamic>> maps = await db.query(
- 'conversation_users',
- where: 'conversation_id = ?',
- whereArgs: [conversation.id],
- orderBy: 'admin',
- );
-
- return List.generate(maps.length, (i) {
- return ConversationUser(
- id: maps[i]['id'],
- conversationId: maps[i]['conversation_id'],
- username: maps[i]['username'],
- associationKey: maps[i]['association_key'],
- admin: maps[i]['admin'] == 1,
- );
- });
- }
-
- Future<ConversationUser> getConversationUserById(Conversation conversation, String id) async {
- final db = await getDatabaseConnection();
-
- final List<Map<String, dynamic>> maps = await db.query(
- 'conversation_users',
- where: 'conversation_id = ? AND id = ?',
- whereArgs: [conversation.id, id],
- );
-
- if (maps.length != 1) {
- throw ArgumentError('Invalid conversation_id or id');
- }
-
- return ConversationUser(
- id: maps[0]['id'],
- conversationId: maps[0]['conversation_id'],
- username: maps[0]['username'],
- associationKey: maps[0]['association_key'],
- admin: maps[0]['admin'] == 1,
- );
-
- }
-
- Future<ConversationUser> getConversationUserByUsername(Conversation conversation, String username) async {
- final db = await getDatabaseConnection();
-
- final List<Map<String, dynamic>> maps = await db.query(
- 'conversation_users',
- where: 'conversation_id = ? AND username = ?',
- whereArgs: [conversation.id, username],
- );
-
- if (maps.length != 1) {
- throw ArgumentError('Invalid conversation_id or username');
- }
-
- return ConversationUser(
- id: maps[0]['id'],
- conversationId: maps[0]['conversation_id'],
- username: maps[0]['username'],
- associationKey: maps[0]['association_key'],
- admin: maps[0]['admin'] == 1,
- );
-
- }
|