• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / supabase-flutter / 33490731163
89%

Build:
DEFAULT BRANCH: main
Ran 01 Sep 2026 09:10AM UTC
Jobs 10
Files 127
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

01 Sep 2026 09:09AM UTC coverage: 88.495% (-0.2%) from 88.676%
33490731163

push

github

web-flow
feat: add typed table access with PostgrestTable and TableColumn (#1634)

## What kind of change does this PR introduce?

Feature (draft for design discussion). This is layer 1 of a plan to make
query results type-safe so users never have to handle `Map<String,
dynamic>`. It adds the runtime primitives to `postgrest` and `supabase`;
a schema code generator that emits row extension types, table
definitions and column tokens is a possible follow-up (layer 2), but
everything here is also usable hand-written.

## What is the current behavior?

Every query resolves to `PostgrestList`/`PostgrestMap` (raw `Map<String,
dynamic>` shapes). The only typing affordance is `withConverter`, which
can only be applied at the end of a chain, and filters, `stream()`, and
mutations are stringly typed throughout.

## What is the new behavior?

A typed, opt-in parallel surface next to the existing string-based API
(which is unchanged):

```dart
extension type Book(Map<String, dynamic> json) {
  int get id => json['id'] as int;
  String get title => json['title'] as String;
}

class Books {
  static const table = PostgrestTable('books', Book.new);
  static const id = TableColumn<int>('id');
  static const title = TableColumn<String>('title');
}

final List<Book> books = await supabase
    .table(Books.table)
    .select()
    .where(Books.id.gt(10))
    .where(Books.title.like('%Dart%'))
    .order(Books.title, ascending: true);

final Book book =
    await supabase.table(Books.table).insert({'title': 'foo'}).select().single();

supabase
    .table(Books.table)
    .stream(primaryKey: [Books.id])
    .filter(Books.status.eq(true))
    .listen((List<Book> books) { /* ... */ });
```

- `PostgrestTable<Row>` describes a table plus its row converter;
`client.table(...)` (on `PostgrestClient`, `SupabaseClient` and
`SupabaseQuerySchema`) is the typed counterpart of `from(...)`.
- `TableColumn<Value>` carries the column name and value type. Filter
methods live on the column (`Book... (continued)

323 of 379 new or added lines in 10 files covered. (85.22%)

6423 of 7258 relevant lines covered (88.5%)

4.47 hits per line

Uncovered Changes

Lines Coverage ∆ File
43
76.88
packages/postgrest/lib/src/postgrest_table.dart
7
76.67
packages/postgrest/lib/src/postgrest_typed_builder.dart
3
94.44
packages/supabase/lib/src/supabase_typed_stream_builder.dart
2
91.67
-8.33% packages/supabase/lib/src/supabase_query_schema.dart
1
97.5
packages/postgrest/lib/src/postgrest_typed_transform_builder.dart
Jobs
ID Job ID Ran Files Coverage
3 supabase_storage - 33490731163.3 01 Sep 2026 09:13AM UTC 9
97.35
GitHub Action Run
4 supabase_flutter - 33490731163.4 01 Sep 2026 09:11AM UTC 11
82.22
GitHub Action Run
5 supabase - 33490731163.5 01 Sep 2026 09:13AM UTC 16
93.35
GitHub Action Run
6 iceberg - 33490731163.6 01 Sep 2026 09:10AM UTC 6
68.52
GitHub Action Run
7 supabase_realtime - 33490731163.7 01 Sep 2026 09:13AM UTC 13
90.66
GitHub Action Run
8 postgrest - 33490731163.8 01 Sep 2026 09:13AM UTC 16
84.45
GitHub Action Run
9 supabase_functions - 33490731163.9 01 Sep 2026 09:10AM UTC 4
93.81
GitHub Action Run
10 supabase_auth - 33490731163.10 01 Sep 2026 09:14AM UTC 30
90.57
GitHub Action Run
9 supabase_common - 32951661159.9 26 Aug 2026 09:12AM UTC 21
86.96
GitHub Action Run
5 yet_another_json_isolate - 32956931006.5 26 Aug 2026 10:12AM UTC 1
98.44
GitHub Action Run
Source Files on build 33490731163
  • Tree
  • List 127
  • Changed 13
  • Source Changed 13
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33490731163
  • f0b9366d on github
  • Prev Build on main (#33399042926)
  • Next Build on main (#33505617846)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc