Skip to content

Commit b587c7b

Browse files
authored
Merge pull request #81 from Prashant4900/main
Version Upgrade
2 parents 03ef655 + 06ed6f0 commit b587c7b

File tree

11 files changed

+184
-199
lines changed

11 files changed

+184
-199
lines changed

example/lib/models/account.schema.dart

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,27 @@ class _AccountRepository extends BaseRepository
6565
if (requests.isEmpty) return [];
6666
var values = QueryValues();
6767
var rows = await db.execute(
68-
Sql.named('INSERT INTO "accounts" ( "first_name", "last_name", "location", "company_id" )\n'
69-
'VALUES ${requests.map((r) => '( ${values.add(r.firstName)}:text, ${values.add(r.lastName)}:text, ${values.add(LatLngConverter().tryEncode(r.location))}:point, ${values.add(r.companyId)}:text )').join(', ')}\n'
70-
'RETURNING "id"'),
68+
Sql.named(
69+
'INSERT INTO "accounts" ( "first_name", "last_name", "location", "company_id" )\n'
70+
'VALUES ${requests.map((r) => '( ${values.add(r.firstName)}:text, ${values.add(r.lastName)}:text, ${values.add(LatLngConverter().tryEncode(r.location))}:point, ${values.add(r.companyId)}:text )').join(', ')}\n'
71+
'RETURNING "id"',
72+
),
7173
parameters: values.values,
7274
);
7375
var result = rows.map<int>((r) => TextEncoder.i.decode(r.toColumnMap()['id'])).toList();
7476

75-
await db.billingAddresses.insertMany(requests.where((r) => r.billingAddress != null).map((r) {
76-
return BillingAddressInsertRequest(
77+
await db.billingAddresses.insertMany(
78+
requests.where((r) => r.billingAddress != null).map((r) {
79+
return BillingAddressInsertRequest(
7780
city: r.billingAddress!.city,
7881
postcode: r.billingAddress!.postcode,
7982
name: r.billingAddress!.name,
8083
street: r.billingAddress!.street,
8184
accountId: result[requests.indexOf(r)],
82-
companyId: null);
83-
}).toList());
85+
companyId: null,
86+
);
87+
}).toList(),
88+
);
8489

8590
return result;
8691
}
@@ -90,21 +95,26 @@ class _AccountRepository extends BaseRepository
9095
if (requests.isEmpty) return;
9196
var values = QueryValues();
9297
await db.execute(
93-
Sql.named('UPDATE "accounts"\n'
94-
'SET "first_name" = COALESCE(UPDATED."first_name", "accounts"."first_name"), "last_name" = COALESCE(UPDATED."last_name", "accounts"."last_name"), "location" = COALESCE(UPDATED."location", "accounts"."location"), "company_id" = COALESCE(UPDATED."company_id", "accounts"."company_id")\n'
95-
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.id)}:int8::int8, ${values.add(r.firstName)}:text::text, ${values.add(r.lastName)}:text::text, ${values.add(LatLngConverter().tryEncode(r.location))}:point::point, ${values.add(r.companyId)}:text::text )').join(', ')} )\n'
96-
'AS UPDATED("id", "first_name", "last_name", "location", "company_id")\n'
97-
'WHERE "accounts"."id" = UPDATED."id"'),
98+
Sql.named(
99+
'UPDATE "accounts"\n'
100+
'SET "first_name" = COALESCE(UPDATED."first_name", "accounts"."first_name"), "last_name" = COALESCE(UPDATED."last_name", "accounts"."last_name"), "location" = COALESCE(UPDATED."location", "accounts"."location"), "company_id" = COALESCE(UPDATED."company_id", "accounts"."company_id")\n'
101+
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.id)}:int8::int8, ${values.add(r.firstName)}:text::text, ${values.add(r.lastName)}:text::text, ${values.add(LatLngConverter().tryEncode(r.location))}:point::point, ${values.add(r.companyId)}:text::text )').join(', ')} )\n'
102+
'AS UPDATED("id", "first_name", "last_name", "location", "company_id")\n'
103+
'WHERE "accounts"."id" = UPDATED."id"',
104+
),
98105
parameters: values.values,
99106
);
100-
await db.billingAddresses.updateMany(requests.where((r) => r.billingAddress != null).map((r) {
101-
return BillingAddressUpdateRequest(
107+
await db.billingAddresses.updateMany(
108+
requests.where((r) => r.billingAddress != null).map((r) {
109+
return BillingAddressUpdateRequest(
102110
city: r.billingAddress!.city,
103111
postcode: r.billingAddress!.postcode,
104112
name: r.billingAddress!.name,
105113
street: r.billingAddress!.street,
106-
accountId: r.id);
107-
}).toList());
114+
accountId: r.id,
115+
);
116+
}).toList(),
117+
);
108118
}
109119
}
110120

@@ -179,14 +189,15 @@ class FullAccountViewQueryable extends KeyedViewQueryable<FullAccountView, int>
179189

180190
@override
181191
FullAccountView decode(TypedMap map) => FullAccountView(
182-
id: map.get('id'),
183-
firstName: map.get('first_name'),
184-
lastName: map.get('last_name'),
185-
location: map.get('location', LatLngConverter().decode),
186-
billingAddress: map.getOpt('billingAddress', BillingAddressViewQueryable().decoder),
187-
invoices: map.getListOpt('invoices', OwnerInvoiceViewQueryable().decoder) ?? const [],
188-
company: map.getOpt('company', MemberCompanyViewQueryable().decoder),
189-
parties: map.getListOpt('parties', GuestPartyViewQueryable().decoder) ?? const []);
192+
id: map.get('id'),
193+
firstName: map.get('first_name'),
194+
lastName: map.get('last_name'),
195+
location: map.get('location', LatLngConverter().decode),
196+
billingAddress: map.getOpt('billingAddress', BillingAddressViewQueryable().decoder),
197+
invoices: map.getListOpt('invoices', OwnerInvoiceViewQueryable().decoder) ?? const [],
198+
company: map.getOpt('company', MemberCompanyViewQueryable().decoder),
199+
parties: map.getListOpt('parties', GuestPartyViewQueryable().decoder) ?? const [],
200+
);
190201
}
191202

192203
class FullAccountView {
@@ -248,14 +259,15 @@ class UserAccountViewQueryable extends KeyedViewQueryable<UserAccountView, int>
248259

249260
@override
250261
UserAccountView decode(TypedMap map) => UserAccountView(
251-
id: map.get('id'),
252-
firstName: map.get('first_name'),
253-
lastName: map.get('last_name'),
254-
location: map.get('location', LatLngConverter().decode),
255-
billingAddress: map.getOpt('billingAddress', BillingAddressViewQueryable().decoder),
256-
invoices: map.getListOpt('invoices', OwnerInvoiceViewQueryable().decoder) ?? const [],
257-
company: map.getOpt('company', MemberCompanyViewQueryable().decoder),
258-
parties: map.getListOpt('parties', GuestPartyViewQueryable().decoder) ?? const []);
262+
id: map.get('id'),
263+
firstName: map.get('first_name'),
264+
lastName: map.get('last_name'),
265+
location: map.get('location', LatLngConverter().decode),
266+
billingAddress: map.getOpt('billingAddress', BillingAddressViewQueryable().decoder),
267+
invoices: map.getListOpt('invoices', OwnerInvoiceViewQueryable().decoder) ?? const [],
268+
company: map.getOpt('company', MemberCompanyViewQueryable().decoder),
269+
parties: map.getListOpt('parties', GuestPartyViewQueryable().decoder) ?? const [],
270+
);
259271
}
260272

261273
class UserAccountView {
@@ -306,11 +318,12 @@ class CompanyAccountViewQueryable extends KeyedViewQueryable<CompanyAccountView,
306318

307319
@override
308320
CompanyAccountView decode(TypedMap map) => CompanyAccountView(
309-
id: map.get('id'),
310-
firstName: map.get('first_name'),
311-
lastName: map.get('last_name'),
312-
location: map.get('location', LatLngConverter().decode),
313-
parties: map.getListOpt('parties', CompanyPartyViewQueryable().decoder) ?? const []);
321+
id: map.get('id'),
322+
firstName: map.get('first_name'),
323+
lastName: map.get('last_name'),
324+
location: map.get('location', LatLngConverter().decode),
325+
parties: map.getListOpt('parties', CompanyPartyViewQueryable().decoder) ?? const [],
326+
);
314327
}
315328

316329
class CompanyAccountView {

example/lib/models/address.schema.dart

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ class _BillingAddressRepository extends BaseRepository
3434
var values = QueryValues();
3535
await db.execute(
3636
Sql.named(
37-
'INSERT INTO "billing_addresses" ( "city", "postcode", "name", "street", "account_id", "company_id" )\n'
38-
'VALUES ${requests.map((r) => '( ${values.add(r.city)}:text, ${values.add(r.postcode)}:text, ${values.add(r.name)}:text, ${values.add(r.street)}:text, ${values.add(r.accountId)}:int8, ${values.add(r.companyId)}:text )').join(', ')}\n'),
37+
'INSERT INTO "billing_addresses" ( "city", "postcode", "name", "street", "account_id", "company_id" )\n'
38+
'VALUES ${requests.map((r) => '( ${values.add(r.city)}:text, ${values.add(r.postcode)}:text, ${values.add(r.name)}:text, ${values.add(r.street)}:text, ${values.add(r.accountId)}:int8, ${values.add(r.companyId)}:text )').join(', ')}\n',
39+
),
3940
parameters: values.values,
4041
);
4142
}
@@ -45,11 +46,13 @@ class _BillingAddressRepository extends BaseRepository
4546
if (requests.isEmpty) return;
4647
var values = QueryValues();
4748
await db.execute(
48-
Sql.named('UPDATE "billing_addresses"\n'
49-
'SET "city" = COALESCE(UPDATED."city", "billing_addresses"."city"), "postcode" = COALESCE(UPDATED."postcode", "billing_addresses"."postcode"), "name" = COALESCE(UPDATED."name", "billing_addresses"."name"), "street" = COALESCE(UPDATED."street", "billing_addresses"."street")\n'
50-
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.city)}:text::text, ${values.add(r.postcode)}:text::text, ${values.add(r.name)}:text::text, ${values.add(r.street)}:text::text, ${values.add(r.accountId)}:int8::int8, ${values.add(r.companyId)}:text::text )').join(', ')} )\n'
51-
'AS UPDATED("city", "postcode", "name", "street", "account_id", "company_id")\n'
52-
'WHERE "billing_addresses"."account_id" = UPDATED."account_id" AND "billing_addresses"."company_id" = UPDATED."company_id"'),
49+
Sql.named(
50+
'UPDATE "billing_addresses"\n'
51+
'SET "city" = COALESCE(UPDATED."city", "billing_addresses"."city"), "postcode" = COALESCE(UPDATED."postcode", "billing_addresses"."postcode"), "name" = COALESCE(UPDATED."name", "billing_addresses"."name"), "street" = COALESCE(UPDATED."street", "billing_addresses"."street")\n'
52+
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.city)}:text::text, ${values.add(r.postcode)}:text::text, ${values.add(r.name)}:text::text, ${values.add(r.street)}:text::text, ${values.add(r.accountId)}:int8::int8, ${values.add(r.companyId)}:text::text )').join(', ')} )\n'
53+
'AS UPDATED("city", "postcode", "name", "street", "account_id", "company_id")\n'
54+
'WHERE "billing_addresses"."account_id" = UPDATED."account_id" AND "billing_addresses"."company_id" = UPDATED."company_id"',
55+
),
5356
parameters: values.values,
5457
);
5558
}
@@ -101,10 +104,11 @@ class BillingAddressViewQueryable extends ViewQueryable<BillingAddressView> {
101104

102105
@override
103106
BillingAddressView decode(TypedMap map) => BillingAddressView(
104-
city: map.get('city'),
105-
postcode: map.get('postcode'),
106-
name: map.get('name'),
107-
street: map.get('street'));
107+
city: map.get('city'),
108+
postcode: map.get('postcode'),
109+
name: map.get('name'),
110+
street: map.get('street'),
111+
);
108112
}
109113

110114
class BillingAddressView implements BillingAddress {

example/lib/models/company.schema.dart

Lines changed: 52 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -53,59 +53,69 @@ class _CompanyRepository extends BaseRepository
5353
if (requests.isEmpty) return;
5454
var values = QueryValues();
5555
await db.execute(
56-
Sql.named('INSERT INTO "companies" ( "id", "name" )\n'
57-
'VALUES ${requests.map((r) => '( ${values.add(r.id)}:text, ${values.add(r.name)}:text )').join(', ')}\n'),
56+
Sql.named(
57+
'INSERT INTO "companies" ( "id", "name" )\n'
58+
'VALUES ${requests.map((r) => '( ${values.add(r.id)}:text, ${values.add(r.name)}:text )').join(', ')}\n',
59+
),
5860
parameters: values.values,
5961
);
6062

61-
await db.billingAddresses.insertMany(requests.expand((r) {
62-
return r.addresses.map((rr) => BillingAddressInsertRequest(
63-
city: rr.city,
64-
postcode: rr.postcode,
65-
name: rr.name,
66-
street: rr.street,
67-
accountId: null,
68-
companyId: r.id));
69-
}).toList());
63+
await db.billingAddresses.insertMany(
64+
requests.expand((r) {
65+
return r.addresses.map(
66+
(rr) => BillingAddressInsertRequest(
67+
city: rr.city,
68+
postcode: rr.postcode,
69+
name: rr.name,
70+
street: rr.street,
71+
accountId: null,
72+
companyId: r.id,
73+
),
74+
);
75+
}).toList(),
76+
);
7077
}
7178

7279
@override
7380
Future<void> update(List<CompanyUpdateRequest> requests) async {
7481
if (requests.isEmpty) return;
7582
var values = QueryValues();
7683
await db.execute(
77-
Sql.named('UPDATE "companies"\n'
78-
'SET "name" = COALESCE(UPDATED."name", "companies"."name")\n'
79-
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.id)}:text::text, ${values.add(r.name)}:text::text )').join(', ')} )\n'
80-
'AS UPDATED("id", "name")\n'
81-
'WHERE "companies"."id" = UPDATED."id"'),
84+
Sql.named(
85+
'UPDATE "companies"\n'
86+
'SET "name" = COALESCE(UPDATED."name", "companies"."name")\n'
87+
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.id)}:text::text, ${values.add(r.name)}:text::text )').join(', ')} )\n'
88+
'AS UPDATED("id", "name")\n'
89+
'WHERE "companies"."id" = UPDATED."id"',
90+
),
8291
parameters: values.values,
8392
);
84-
await db.billingAddresses.updateMany(requests.where((r) => r.addresses != null).expand((r) {
85-
return r.addresses!.map((rr) => BillingAddressUpdateRequest(
86-
city: rr.city, postcode: rr.postcode, name: rr.name, street: rr.street, companyId: r.id));
87-
}).toList());
93+
await db.billingAddresses.updateMany(
94+
requests.where((r) => r.addresses != null).expand((r) {
95+
return r.addresses!.map(
96+
(rr) => BillingAddressUpdateRequest(
97+
city: rr.city,
98+
postcode: rr.postcode,
99+
name: rr.name,
100+
street: rr.street,
101+
companyId: r.id,
102+
),
103+
);
104+
}).toList(),
105+
);
88106
}
89107
}
90108

91109
class CompanyInsertRequest {
92-
CompanyInsertRequest({
93-
required this.id,
94-
required this.name,
95-
required this.addresses,
96-
});
110+
CompanyInsertRequest({required this.id, required this.name, required this.addresses});
97111

98112
final String id;
99113
final String name;
100114
final List<BillingAddress> addresses;
101115
}
102116

103117
class CompanyUpdateRequest {
104-
CompanyUpdateRequest({
105-
required this.id,
106-
this.name,
107-
this.addresses,
108-
});
118+
CompanyUpdateRequest({required this.id, this.name, this.addresses});
109119

110120
final String id;
111121
final String? name;
@@ -157,12 +167,13 @@ class FullCompanyViewQueryable extends KeyedViewQueryable<FullCompanyView, Strin
157167

158168
@override
159169
FullCompanyView decode(TypedMap map) => FullCompanyView(
160-
id: map.get('id'),
161-
name: map.get('name'),
162-
addresses: map.getListOpt('addresses', BillingAddressViewQueryable().decoder) ?? const [],
163-
members: map.getListOpt('members', CompanyAccountViewQueryable().decoder) ?? const [],
164-
invoices: map.getListOpt('invoices', OwnerInvoiceViewQueryable().decoder) ?? const [],
165-
parties: map.getListOpt('parties', CompanyPartyViewQueryable().decoder) ?? const []);
170+
id: map.get('id'),
171+
name: map.get('name'),
172+
addresses: map.getListOpt('addresses', BillingAddressViewQueryable().decoder) ?? const [],
173+
members: map.getListOpt('members', CompanyAccountViewQueryable().decoder) ?? const [],
174+
invoices: map.getListOpt('invoices', OwnerInvoiceViewQueryable().decoder) ?? const [],
175+
parties: map.getListOpt('parties', CompanyPartyViewQueryable().decoder) ?? const [],
176+
);
166177
}
167178

168179
class FullCompanyView {
@@ -206,17 +217,14 @@ class MemberCompanyViewQueryable extends KeyedViewQueryable<MemberCompanyView, S
206217

207218
@override
208219
MemberCompanyView decode(TypedMap map) => MemberCompanyView(
209-
id: map.get('id'),
210-
name: map.get('name'),
211-
addresses: map.getListOpt('addresses', BillingAddressViewQueryable().decoder) ?? const []);
220+
id: map.get('id'),
221+
name: map.get('name'),
222+
addresses: map.getListOpt('addresses', BillingAddressViewQueryable().decoder) ?? const [],
223+
);
212224
}
213225

214226
class MemberCompanyView {
215-
MemberCompanyView({
216-
required this.id,
217-
required this.name,
218-
required this.addresses,
219-
});
227+
MemberCompanyView({required this.id, required this.name, required this.addresses});
220228

221229
final String id;
222230
final String name;

example/lib/models/invoice.schema.dart

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ class _InvoiceRepository extends BaseRepository
4242
var values = QueryValues();
4343
await db.execute(
4444
Sql.named(
45-
'INSERT INTO "invoices" ( "id", "title", "invoice_id", "account_id", "company_id" )\n'
46-
'VALUES ${requests.map((r) => '( ${values.add(r.id)}:text, ${values.add(r.title)}:text, ${values.add(r.invoiceId)}:text, ${values.add(r.accountId)}:int8, ${values.add(r.companyId)}:text )').join(', ')}\n'),
45+
'INSERT INTO "invoices" ( "id", "title", "invoice_id", "account_id", "company_id" )\n'
46+
'VALUES ${requests.map((r) => '( ${values.add(r.id)}:text, ${values.add(r.title)}:text, ${values.add(r.invoiceId)}:text, ${values.add(r.accountId)}:int8, ${values.add(r.companyId)}:text )').join(', ')}\n',
47+
),
4748
parameters: values.values,
4849
);
4950
}
@@ -53,11 +54,13 @@ class _InvoiceRepository extends BaseRepository
5354
if (requests.isEmpty) return;
5455
var values = QueryValues();
5556
await db.execute(
56-
Sql.named('UPDATE "invoices"\n'
57-
'SET "title" = COALESCE(UPDATED."title", "invoices"."title"), "invoice_id" = COALESCE(UPDATED."invoice_id", "invoices"."invoice_id"), "account_id" = COALESCE(UPDATED."account_id", "invoices"."account_id"), "company_id" = COALESCE(UPDATED."company_id", "invoices"."company_id")\n'
58-
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.id)}:text::text, ${values.add(r.title)}:text::text, ${values.add(r.invoiceId)}:text::text, ${values.add(r.accountId)}:int8::int8, ${values.add(r.companyId)}:text::text )').join(', ')} )\n'
59-
'AS UPDATED("id", "title", "invoice_id", "account_id", "company_id")\n'
60-
'WHERE "invoices"."id" = UPDATED."id"'),
57+
Sql.named(
58+
'UPDATE "invoices"\n'
59+
'SET "title" = COALESCE(UPDATED."title", "invoices"."title"), "invoice_id" = COALESCE(UPDATED."invoice_id", "invoices"."invoice_id"), "account_id" = COALESCE(UPDATED."account_id", "invoices"."account_id"), "company_id" = COALESCE(UPDATED."company_id", "invoices"."company_id")\n'
60+
'FROM ( VALUES ${requests.map((r) => '( ${values.add(r.id)}:text::text, ${values.add(r.title)}:text::text, ${values.add(r.invoiceId)}:text::text, ${values.add(r.accountId)}:int8::int8, ${values.add(r.companyId)}:text::text )').join(', ')} )\n'
61+
'AS UPDATED("id", "title", "invoice_id", "account_id", "company_id")\n'
62+
'WHERE "invoices"."id" = UPDATED."id"',
63+
),
6164
parameters: values.values,
6265
);
6366
}
@@ -111,15 +114,14 @@ class OwnerInvoiceViewQueryable extends KeyedViewQueryable<OwnerInvoiceView, Str
111114

112115
@override
113116
OwnerInvoiceView decode(TypedMap map) => OwnerInvoiceView(
114-
id: map.get('id'), title: map.get('title'), invoiceId: map.get('invoice_id'));
117+
id: map.get('id'),
118+
title: map.get('title'),
119+
invoiceId: map.get('invoice_id'),
120+
);
115121
}
116122

117123
class OwnerInvoiceView {
118-
OwnerInvoiceView({
119-
required this.id,
120-
required this.title,
121-
required this.invoiceId,
122-
});
124+
OwnerInvoiceView({required this.id, required this.title, required this.invoiceId});
123125

124126
final String id;
125127
final String title;

0 commit comments

Comments
 (0)