База данных Flutter floor Future bool action в файле DAO? - PullRequest
0 голосов
/ 09 апреля 2020

При использовании базы данных floor мы можем установить действие, которое будет выглядеть как логическое значение, как в примере ниже?

Future<bool> isItAdded(in user_id) async{
    var = dbClient = await db;
    List<Map> list = await dbClient.rawQuery{SELECT * FROM Users WHERE user_id}, [user_id]}
    return list.lenght > 0 ? true : false
}

1 Ответ

1 голос
/ 28 апреля 2020

Вы можете написать объект DAO:

@dao
abstract class UsersDao {
  @Query('SELECT * FROM users WHERE user_id = :userId')
  Future<List<User>> findUsers(Int userId);
}

Перед этим вам необходимо создать объект:

@Entity(tableName: 'users')
class User{
  @PrimaryKey(autoGenerate: true)
  final int id;

  @ColumnInfo(name: 'user_id')
  final int userId;
}

Также вам необходимо создать объект доступа к базе данных:

part 'database.g.dart'; // the generated code will be there

 @Database(version: 1, entities: [User])
 abstract class AppDatabase extends FloorDatabase {
   UsersDao get usersDao;
 }

Затем сгенерируйте дополнительный код с помощью команды:

flutter packages pub run build_runner build

И затем запишите функцию проверки внутри объекта доступа к базе данных:

Future<bool> isItAdded(in user_id) async {
    List<User> list = await usersDao.findUsers(user_id);
    return list.lenght > 0;
}

Лучшее решение - не добавлять user_id столбец и использовать только уникальный id столбец.

...