Files
tasq/lib/brick/brick.g.dart
T
redz1029 b307f66f2c Add PM extension (Projects, Work Logs, Comments) + Quill rich-text UI
Projects: Brick-backed model with list/detail screens and nav entry.
Work Logs: per-contributor time ledger, assignee running-clock +
helper logged minutes with Hours/Minutes input; pause-after-save and
helper-deduct prompts.
Comments: threaded comments with file attachments and Quill composer.
Detail screen: tabbed layout (Work Log / Comments / Activity),
editable title + description via edit dialog, Quill-rendered
descriptions with legacy plain-text fallback.
Create dialog: fixed-width (480px max), Quill description editor.
Shared QuillFieldEditor + QuillReadOnly widgets extracted for reuse.
RLS: hardened activity-log actor binding, immutable creator_id/
created_at triggers, SECURITY INVOKER visibility helper,
append-only work-log and scoped comment policies.
Brick migration for project_id FK on programmer_tasks.

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-09-27 16:06:26 +08:00

127 lines
5.8 KiB
Dart

// ignore: unused_import, unused_shown_name, unnecessary_import
import 'package:brick_core/query.dart';
// ignore: unused_import, unused_shown_name, unnecessary_import
import 'package:brick_sqlite/db.dart';
// ignore: unused_import, unused_shown_name, unnecessary_import
import 'package:brick_offline_first_with_supabase/brick_offline_first_with_supabase.dart';
// ignore: unused_import, unused_shown_name, unnecessary_import
import 'package:brick_sqlite/brick_sqlite.dart';
// ignore: unused_import, unused_shown_name, unnecessary_import
import 'package:brick_supabase/brick_supabase.dart';
// ignore: unused_import, unused_shown_name, unnecessary_import
import '../utils/app_time.dart';
// ignore: unused_import, unused_shown_name, unnecessary_import
import 'package:tasq/models/team_member.dart';// GENERATED CODE DO NOT EDIT
// ignore: unused_import
import 'dart:convert';
import 'package:brick_sqlite/brick_sqlite.dart' show SqliteModel, SqliteAdapter, SqliteModelDictionary, RuntimeSqliteColumnDefinition, SqliteProvider;
import 'package:brick_supabase/brick_supabase.dart' show SupabaseProvider, SupabaseModel, SupabaseAdapter, SupabaseModelDictionary;
// ignore: unused_import, unused_shown_name
import 'package:brick_offline_first/brick_offline_first.dart' show RuntimeOfflineFirstDefinition;
// ignore: unused_import, unused_shown_name
import 'package:sqflite_common/sqlite_api.dart' show DatabaseExecutor;
import '../models/announcement.model.dart';
import '../models/announcement_comment.model.dart';
import '../models/attendance_log.model.dart';
import '../models/chat_message.model.dart';
import '../models/duty_schedule.model.dart';
import '../models/it_service_request.model.dart';
import '../models/it_service_request_action.model.dart';
import '../models/it_service_request_activity_log.model.dart';
import '../models/it_service_request_assignment.model.dart';
import '../models/leave_of_absence.model.dart';
import '../models/notification_item.model.dart';
import '../models/office.model.dart';
import '../models/pass_slip.model.dart';
import '../models/profile.model.dart';
import '../models/programmer_project.model.dart';
import '../models/programmer_task.model.dart';
import '../models/programmer_task_activity_log.model.dart';
import '../models/service.model.dart';
import '../models/swap_request.model.dart';
import '../models/task.model.dart';
import '../models/task_activity_log.model.dart';
import '../models/team.model.dart';
import '../models/ticket.model.dart';
part 'adapters/announcement_adapter.g.dart';
part 'adapters/announcement_comment_adapter.g.dart';
part 'adapters/attendance_log_adapter.g.dart';
part 'adapters/chat_message_adapter.g.dart';
part 'adapters/duty_schedule_adapter.g.dart';
part 'adapters/it_service_request_adapter.g.dart';
part 'adapters/it_service_request_action_adapter.g.dart';
part 'adapters/it_service_request_activity_log_adapter.g.dart';
part 'adapters/it_service_request_assignment_adapter.g.dart';
part 'adapters/leave_of_absence_adapter.g.dart';
part 'adapters/notification_item_adapter.g.dart';
part 'adapters/office_adapter.g.dart';
part 'adapters/pass_slip_adapter.g.dart';
part 'adapters/profile_adapter.g.dart';
part 'adapters/programmer_project_adapter.g.dart';
part 'adapters/programmer_task_adapter.g.dart';
part 'adapters/programmer_task_activity_log_adapter.g.dart';
part 'adapters/service_adapter.g.dart';
part 'adapters/swap_request_adapter.g.dart';
part 'adapters/task_adapter.g.dart';
part 'adapters/task_activity_log_adapter.g.dart';
part 'adapters/team_adapter.g.dart';
part 'adapters/ticket_adapter.g.dart';
/// Supabase mappings should only be used when initializing a [SupabaseProvider]
final Map<Type, SupabaseAdapter<SupabaseModel>> supabaseMappings = {
Announcement: AnnouncementAdapter(),
AnnouncementComment: AnnouncementCommentAdapter(),
AttendanceLog: AttendanceLogAdapter(),
ChatMessage: ChatMessageAdapter(),
DutySchedule: DutyScheduleAdapter(),
ItServiceRequest: ItServiceRequestAdapter(),
ItServiceRequestAction: ItServiceRequestActionAdapter(),
ItServiceRequestActivityLog: ItServiceRequestActivityLogAdapter(),
ItServiceRequestAssignment: ItServiceRequestAssignmentAdapter(),
LeaveOfAbsence: LeaveOfAbsenceAdapter(),
NotificationItem: NotificationItemAdapter(),
Office: OfficeAdapter(),
PassSlip: PassSlipAdapter(),
Profile: ProfileAdapter(),
ProgrammerProject: ProgrammerProjectAdapter(),
ProgrammerTask: ProgrammerTaskAdapter(),
ProgrammerTaskActivityLog: ProgrammerTaskActivityLogAdapter(),
Service: ServiceAdapter(),
SwapRequest: SwapRequestAdapter(),
Task: TaskAdapter(),
TaskActivityLog: TaskActivityLogAdapter(),
Team: TeamAdapter(),
Ticket: TicketAdapter()
};
final supabaseModelDictionary = SupabaseModelDictionary(supabaseMappings);
/// Sqlite mappings should only be used when initializing a [SqliteProvider]
final Map<Type, SqliteAdapter<SqliteModel>> sqliteMappings = {
Announcement: AnnouncementAdapter(),
AnnouncementComment: AnnouncementCommentAdapter(),
AttendanceLog: AttendanceLogAdapter(),
ChatMessage: ChatMessageAdapter(),
DutySchedule: DutyScheduleAdapter(),
ItServiceRequest: ItServiceRequestAdapter(),
ItServiceRequestAction: ItServiceRequestActionAdapter(),
ItServiceRequestActivityLog: ItServiceRequestActivityLogAdapter(),
ItServiceRequestAssignment: ItServiceRequestAssignmentAdapter(),
LeaveOfAbsence: LeaveOfAbsenceAdapter(),
NotificationItem: NotificationItemAdapter(),
Office: OfficeAdapter(),
PassSlip: PassSlipAdapter(),
Profile: ProfileAdapter(),
ProgrammerProject: ProgrammerProjectAdapter(),
ProgrammerTask: ProgrammerTaskAdapter(),
ProgrammerTaskActivityLog: ProgrammerTaskActivityLogAdapter(),
Service: ServiceAdapter(),
SwapRequest: SwapRequestAdapter(),
Task: TaskAdapter(),
TaskActivityLog: TaskActivityLogAdapter(),
Team: TeamAdapter(),
Ticket: TicketAdapter()
};
final sqliteModelDictionary = SqliteModelDictionary(sqliteMappings);