초기 커밋
This commit is contained in:
20
lib/shared/models/api_response.dart
Normal file
20
lib/shared/models/api_response.dart
Normal file
@@ -0,0 +1,20 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'api_response.freezed.dart';
|
||||
part 'api_response.g.dart';
|
||||
|
||||
@Freezed(genericArgumentFactories: true)
|
||||
class ApiResponse<T> with _$ApiResponse<T> {
|
||||
const factory ApiResponse({
|
||||
required bool success,
|
||||
required T data,
|
||||
String? message,
|
||||
@Default(200) int statusCode,
|
||||
}) = _ApiResponse<T>;
|
||||
|
||||
factory ApiResponse.fromJson(
|
||||
Map<String, dynamic> json,
|
||||
T Function(Object?) fromJsonT,
|
||||
) =>
|
||||
_$ApiResponseFromJson(json, fromJsonT);
|
||||
}
|
||||
23
lib/shared/models/pagination.dart
Normal file
23
lib/shared/models/pagination.dart
Normal file
@@ -0,0 +1,23 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
|
||||
part 'pagination.freezed.dart';
|
||||
part 'pagination.g.dart';
|
||||
|
||||
@Freezed(genericArgumentFactories: true)
|
||||
class PaginatedResponse<T> with _$PaginatedResponse<T> {
|
||||
const factory PaginatedResponse({
|
||||
required List<T> items,
|
||||
required int total,
|
||||
required int page,
|
||||
@JsonKey(name: 'page_size') required int pageSize,
|
||||
@JsonKey(name: 'total_pages') required int totalPages,
|
||||
@JsonKey(name: 'has_next') @Default(false) bool hasNext,
|
||||
@JsonKey(name: 'has_prev') @Default(false) bool hasPrev,
|
||||
}) = _PaginatedResponse<T>;
|
||||
|
||||
factory PaginatedResponse.fromJson(
|
||||
Map<String, dynamic> json,
|
||||
T Function(Object?) fromJsonT,
|
||||
) =>
|
||||
_$PaginatedResponseFromJson(json, fromJsonT);
|
||||
}
|
||||
18
lib/shared/models/user_role.dart
Normal file
18
lib/shared/models/user_role.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
@JsonEnum(valueField: 'value')
|
||||
enum UserRole {
|
||||
admin('admin'),
|
||||
user('user');
|
||||
|
||||
const UserRole(this.value);
|
||||
|
||||
final String value;
|
||||
|
||||
static UserRole fromString(String value) {
|
||||
return UserRole.values.firstWhere(
|
||||
(role) => role.value == value,
|
||||
orElse: () => UserRole.user,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user