feat: add rows count (broken), fix: bug with low stock items

This commit is contained in:
2026-08-02 23:23:28 +02:00
parent f5b2041612
commit 6060ca2713
19 changed files with 373 additions and 41 deletions
+19 -3
View File
@@ -2,7 +2,6 @@ import 'package:drift/drift.dart';
import 'package:drift_flutter/drift_flutter.dart';
import 'package:path_provider/path_provider.dart';
part 'app_database.g.dart';
@DataClassName('ProductRow')
@@ -111,6 +110,8 @@ class AppSettingsTable extends Table {
TextColumn get language => text().withDefault(const Constant('system'))();
IntColumn get barGridRows => integer().withDefault(const Constant(3))();
@override
Set<Column> get primaryKey => {id};
}
@@ -131,7 +132,7 @@ class AppDatabase extends _$AppDatabase {
AppDatabase([QueryExecutor? executor]) : super(executor ?? _openConnection());
@override
int get schemaVersion => 7;
int get schemaVersion => 8;
@override
MigrationStrategy get migration {
@@ -140,6 +141,14 @@ class AppDatabase extends _$AppDatabase {
await migrator.createAll();
},
onUpgrade: (migrator, from, to) async {
Future<bool> hasSettingsColumn(String columnName) async {
final columns = await migrator.database
.customSelect('PRAGMA table_info(app_settings)')
.get();
return columns.any((column) => column.data['name'] == columnName);
}
if (from < 2) {
await migrator.createTable(barTabs);
await migrator.createTable(tabItems);
@@ -162,9 +171,16 @@ class AppDatabase extends _$AppDatabase {
await migrator.addColumn(closedTabs, closedTabs.paymentMethod);
}
if (from < 7) {
if (from < 7 && !await hasSettingsColumn('language')) {
await migrator.addColumn(appSettingsTable, appSettingsTable.language);
}
if (from < 8 && !await hasSettingsColumn('bar_grid_rows')) {
await migrator.addColumn(
appSettingsTable,
appSettingsTable.barGridRows,
);
}
},
);
}
+81 -4
View File
@@ -2231,8 +2231,26 @@ class $AppSettingsTableTable extends AppSettingsTable
requiredDuringInsert: false,
defaultValue: const Constant('system'),
);
static const VerificationMeta _barGridRowsMeta = const VerificationMeta(
'barGridRows',
);
@override
List<GeneratedColumn> get $columns => [id, pinRequired, themeMode, language];
late final GeneratedColumn<int> barGridRows = GeneratedColumn<int>(
'bar_grid_rows',
aliasedName,
false,
type: DriftSqlType.int,
requiredDuringInsert: false,
defaultValue: const Constant(3),
);
@override
List<GeneratedColumn> get $columns => [
id,
pinRequired,
themeMode,
language,
barGridRows,
];
@override
String get aliasedName => _alias ?? actualTableName;
@override
@@ -2271,6 +2289,15 @@ class $AppSettingsTableTable extends AppSettingsTable
language.isAcceptableOrUnknown(data['language']!, _languageMeta),
);
}
if (data.containsKey('bar_grid_rows')) {
context.handle(
_barGridRowsMeta,
barGridRows.isAcceptableOrUnknown(
data['bar_grid_rows']!,
_barGridRowsMeta,
),
);
}
return context;
}
@@ -2296,6 +2323,10 @@ class $AppSettingsTableTable extends AppSettingsTable
DriftSqlType.string,
data['${effectivePrefix}language'],
)!,
barGridRows: attachedDatabase.typeMapping.read(
DriftSqlType.int,
data['${effectivePrefix}bar_grid_rows'],
)!,
);
}
@@ -2310,11 +2341,13 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
final bool pinRequired;
final String themeMode;
final String language;
final int barGridRows;
const AppSettingsRow({
required this.id,
required this.pinRequired,
required this.themeMode,
required this.language,
required this.barGridRows,
});
@override
Map<String, Expression> toColumns(bool nullToAbsent) {
@@ -2323,6 +2356,7 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
map['pin_required'] = Variable<bool>(pinRequired);
map['theme_mode'] = Variable<String>(themeMode);
map['language'] = Variable<String>(language);
map['bar_grid_rows'] = Variable<int>(barGridRows);
return map;
}
@@ -2332,6 +2366,7 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
pinRequired: Value(pinRequired),
themeMode: Value(themeMode),
language: Value(language),
barGridRows: Value(barGridRows),
);
}
@@ -2345,6 +2380,7 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
pinRequired: serializer.fromJson<bool>(json['pinRequired']),
themeMode: serializer.fromJson<String>(json['themeMode']),
language: serializer.fromJson<String>(json['language']),
barGridRows: serializer.fromJson<int>(json['barGridRows']),
);
}
@override
@@ -2355,6 +2391,7 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
'pinRequired': serializer.toJson<bool>(pinRequired),
'themeMode': serializer.toJson<String>(themeMode),
'language': serializer.toJson<String>(language),
'barGridRows': serializer.toJson<int>(barGridRows),
};
}
@@ -2363,11 +2400,13 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
bool? pinRequired,
String? themeMode,
String? language,
int? barGridRows,
}) => AppSettingsRow(
id: id ?? this.id,
pinRequired: pinRequired ?? this.pinRequired,
themeMode: themeMode ?? this.themeMode,
language: language ?? this.language,
barGridRows: barGridRows ?? this.barGridRows,
);
AppSettingsRow copyWithCompanion(AppSettingsTableCompanion data) {
return AppSettingsRow(
@@ -2377,6 +2416,9 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
: this.pinRequired,
themeMode: data.themeMode.present ? data.themeMode.value : this.themeMode,
language: data.language.present ? data.language.value : this.language,
barGridRows: data.barGridRows.present
? data.barGridRows.value
: this.barGridRows,
);
}
@@ -2386,13 +2428,15 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
..write('id: $id, ')
..write('pinRequired: $pinRequired, ')
..write('themeMode: $themeMode, ')
..write('language: $language')
..write('language: $language, ')
..write('barGridRows: $barGridRows')
..write(')'))
.toString();
}
@override
int get hashCode => Object.hash(id, pinRequired, themeMode, language);
int get hashCode =>
Object.hash(id, pinRequired, themeMode, language, barGridRows);
@override
bool operator ==(Object other) =>
identical(this, other) ||
@@ -2400,7 +2444,8 @@ class AppSettingsRow extends DataClass implements Insertable<AppSettingsRow> {
other.id == this.id &&
other.pinRequired == this.pinRequired &&
other.themeMode == this.themeMode &&
other.language == this.language);
other.language == this.language &&
other.barGridRows == this.barGridRows);
}
class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
@@ -2408,12 +2453,14 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
final Value<bool> pinRequired;
final Value<String> themeMode;
final Value<String> language;
final Value<int> barGridRows;
final Value<int> rowid;
const AppSettingsTableCompanion({
this.id = const Value.absent(),
this.pinRequired = const Value.absent(),
this.themeMode = const Value.absent(),
this.language = const Value.absent(),
this.barGridRows = const Value.absent(),
this.rowid = const Value.absent(),
});
AppSettingsTableCompanion.insert({
@@ -2421,6 +2468,7 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
this.pinRequired = const Value.absent(),
this.themeMode = const Value.absent(),
this.language = const Value.absent(),
this.barGridRows = const Value.absent(),
this.rowid = const Value.absent(),
}) : id = Value(id);
static Insertable<AppSettingsRow> custom({
@@ -2428,6 +2476,7 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
Expression<bool>? pinRequired,
Expression<String>? themeMode,
Expression<String>? language,
Expression<int>? barGridRows,
Expression<int>? rowid,
}) {
return RawValuesInsertable({
@@ -2435,6 +2484,7 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
if (pinRequired != null) 'pin_required': pinRequired,
if (themeMode != null) 'theme_mode': themeMode,
if (language != null) 'language': language,
if (barGridRows != null) 'bar_grid_rows': barGridRows,
if (rowid != null) 'rowid': rowid,
});
}
@@ -2444,6 +2494,7 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
Value<bool>? pinRequired,
Value<String>? themeMode,
Value<String>? language,
Value<int>? barGridRows,
Value<int>? rowid,
}) {
return AppSettingsTableCompanion(
@@ -2451,6 +2502,7 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
pinRequired: pinRequired ?? this.pinRequired,
themeMode: themeMode ?? this.themeMode,
language: language ?? this.language,
barGridRows: barGridRows ?? this.barGridRows,
rowid: rowid ?? this.rowid,
);
}
@@ -2470,6 +2522,9 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
if (language.present) {
map['language'] = Variable<String>(language.value);
}
if (barGridRows.present) {
map['bar_grid_rows'] = Variable<int>(barGridRows.value);
}
if (rowid.present) {
map['rowid'] = Variable<int>(rowid.value);
}
@@ -2483,6 +2538,7 @@ class AppSettingsTableCompanion extends UpdateCompanion<AppSettingsRow> {
..write('pinRequired: $pinRequired, ')
..write('themeMode: $themeMode, ')
..write('language: $language, ')
..write('barGridRows: $barGridRows, ')
..write('rowid: $rowid')
..write(')'))
.toString();
@@ -4071,6 +4127,7 @@ typedef $$AppSettingsTableTableCreateCompanionBuilder =
Value<bool> pinRequired,
Value<String> themeMode,
Value<String> language,
Value<int> barGridRows,
Value<int> rowid,
});
typedef $$AppSettingsTableTableUpdateCompanionBuilder =
@@ -4079,6 +4136,7 @@ typedef $$AppSettingsTableTableUpdateCompanionBuilder =
Value<bool> pinRequired,
Value<String> themeMode,
Value<String> language,
Value<int> barGridRows,
Value<int> rowid,
});
@@ -4110,6 +4168,11 @@ class $$AppSettingsTableTableFilterComposer
column: $table.language,
builder: (column) => ColumnFilters(column),
);
ColumnFilters<int> get barGridRows => $composableBuilder(
column: $table.barGridRows,
builder: (column) => ColumnFilters(column),
);
}
class $$AppSettingsTableTableOrderingComposer
@@ -4140,6 +4203,11 @@ class $$AppSettingsTableTableOrderingComposer
column: $table.language,
builder: (column) => ColumnOrderings(column),
);
ColumnOrderings<int> get barGridRows => $composableBuilder(
column: $table.barGridRows,
builder: (column) => ColumnOrderings(column),
);
}
class $$AppSettingsTableTableAnnotationComposer
@@ -4164,6 +4232,11 @@ class $$AppSettingsTableTableAnnotationComposer
GeneratedColumn<String> get language =>
$composableBuilder(column: $table.language, builder: (column) => column);
GeneratedColumn<int> get barGridRows => $composableBuilder(
column: $table.barGridRows,
builder: (column) => column,
);
}
class $$AppSettingsTableTableTableManager
@@ -4207,12 +4280,14 @@ class $$AppSettingsTableTableTableManager
Value<bool> pinRequired = const Value.absent(),
Value<String> themeMode = const Value.absent(),
Value<String> language = const Value.absent(),
Value<int> barGridRows = const Value.absent(),
Value<int> rowid = const Value.absent(),
}) => AppSettingsTableCompanion(
id: id,
pinRequired: pinRequired,
themeMode: themeMode,
language: language,
barGridRows: barGridRows,
rowid: rowid,
),
createCompanionCallback:
@@ -4221,12 +4296,14 @@ class $$AppSettingsTableTableTableManager
Value<bool> pinRequired = const Value.absent(),
Value<String> themeMode = const Value.absent(),
Value<String> language = const Value.absent(),
Value<int> barGridRows = const Value.absent(),
Value<int> rowid = const Value.absent(),
}) => AppSettingsTableCompanion.insert(
id: id,
pinRequired: pinRequired,
themeMode: themeMode,
language: language,
barGridRows: barGridRows,
rowid: rowid,
),
withReferenceMapper: (p0) => p0