Skip to content

Commit

Permalink
Merge pull request #1 from techouse/chore/qs_dart
Browse files Browse the repository at this point in the history
chore: replace internal qs implementation with qs_dart
  • Loading branch information
luffynando authored May 11, 2024
2 parents e78e60a + 3a12c3c commit 478e399
Show file tree
Hide file tree
Showing 13 changed files with 511 additions and 1,287 deletions.
2 changes: 2 additions & 0 deletions example/dart_api_query_example.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: avoid_print

import 'package:dart_api_query/dart_api_query.dart';
import 'package:dio/dio.dart';

Expand Down
2 changes: 1 addition & 1 deletion lib/dart_api_query.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
/// Library Dart Api Query inspired by vue-api-query.
library dart_api_query;

export 'package:qs_dart/src/models/encode_options.dart';
export 'src/api_query.dart';
export 'src/builder.dart';
export 'src/exceptions.dart';
export 'src/parser.dart';
export 'src/qs/stringify_options.dart';
export 'src/query_parameters.dart';
export 'src/resource_collection.dart';
export 'src/resource_object.dart';
Expand Down
85 changes: 47 additions & 38 deletions lib/src/parser.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import 'package:dart_api_query/src/builder.dart';
import 'package:dart_api_query/src/qs/qs.dart';
import 'package:dart_api_query/src/qs/stringify_options.dart';
import 'package:dart_api_query/src/query_parameters.dart';
import 'package:qs_dart/qs_dart.dart';

/// Parse attributes from Builder into query string
class Parser {
/// Create a instance of Parser with a builder has parameter
Parser(this._builder) : _uri = '';
Parser(this._builder) : _uri = StringBuffer();

final Builder _builder;
String _uri;
final StringBuffer _uri;

/// Final query string
String query() {
Expand All @@ -23,12 +22,12 @@ class Parser {
limit();
payload();

return _uri;
return _uri.toString();
}

/// Reset query string
void reset() {
_uri = '';
_uri.clear();
}

/// Builder has includes
Expand Down Expand Up @@ -73,7 +72,7 @@ class Parser {

/// Get query prepend symbol
String prepend() {
return _uri == '' ? '?' : '&';
return _uri.toString() == '' ? '?' : '&';
}

/// Get a parameter names from model
Expand All @@ -87,8 +86,10 @@ class Parser {
return;
}

_uri += '${prepend()}${parameterNames().include}=';
_uri += _builder.includes.join(',');
_uri.writeAll([
'${prepend()}${parameterNames().include}=',
_builder.includes.join(','),
]);
}

/// Parser appends
Expand All @@ -97,8 +98,10 @@ class Parser {
return;
}

_uri += '${prepend()}${parameterNames().append}=';
_uri += _builder.appends.join(',');
_uri.writeAll([
'${prepend()}${parameterNames().append}=',
_builder.appends.join(','),
]);
}

/// Parser fields
Expand All @@ -108,13 +111,13 @@ class Parser {
}

final fields = {parameterNames().fields: _builder.fields};
_uri += prepend();
_uri += Qs.stringify(
fields,
opts: _builder.model.stringifyOptions().merge(
StringifyOptions(encode: false),
),
);
_uri.writeAll([
prepend(),
QS.encode(
fields,
_builder.model.stringifyOptions().copyWith(encode: false),
),
]);
}

/// Parser filters
Expand All @@ -124,13 +127,13 @@ class Parser {
}

final filters = {parameterNames().filter: _builder.filters};
_uri += prepend();
_uri += Qs.stringify(
filters,
opts: _builder.model.stringifyOptions().merge(
StringifyOptions(encode: false),
),
);
_uri.writeAll([
prepend(),
QS.encode(
filters,
_builder.model.stringifyOptions().copyWith(encode: false),
),
]);
}

/// Parser sorts
Expand All @@ -139,8 +142,10 @@ class Parser {
return;
}

_uri += prepend();
_uri += '${parameterNames().sort}=${_builder.sorts.join(',')}';
_uri.writeAll([
prepend(),
'${parameterNames().sort}=${_builder.sorts.join(',')}',
]);
}

/// Parser page
Expand All @@ -149,8 +154,10 @@ class Parser {
return;
}

_uri += prepend();
_uri += '${parameterNames().page}=${_builder.pageValue}';
_uri.writeAll([
prepend(),
'${parameterNames().page}=${_builder.pageValue}',
]);
}

/// Parser limit
Expand All @@ -159,8 +166,10 @@ class Parser {
return;
}

_uri += prepend();
_uri += '${parameterNames().limit}=${_builder.limitValue}';
_uri.writeAll([
prepend(),
'${parameterNames().limit}=${_builder.limitValue}',
]);
}

/// Parser payload
Expand All @@ -169,12 +178,12 @@ class Parser {
return;
}

_uri += prepend();
_uri += Qs.stringify(
_builder.payload,
opts: _builder.model.stringifyOptions().merge(
StringifyOptions(encode: false),
),
);
_uri.writeAll([
prepend(),
QS.encode(
_builder.payload,
_builder.model.stringifyOptions().copyWith(encode: false),
),
]);
}
}
11 changes: 0 additions & 11 deletions lib/src/qs/qs.dart

This file was deleted.

Loading

0 comments on commit 478e399

Please sign in to comment.