add(angel3): adding re-branded angel3 model package

This commit is contained in:
Patrick Stewart 2024-09-22 18:45:52 -07:00
parent d884105ded
commit e12b15f8c8
9 changed files with 273 additions and 0 deletions

71
packages/model/.gitignore vendored Normal file
View file

@ -0,0 +1,71 @@
# See https://www.dartlang.org/tools/private-files.html
# Files and directories created by pub
.dart_tool
.packages
.pub/
build/
# If you're building an application, you may want to check-in your pubspec.lock
pubspec.lock
# Directory created by dartdoc
# If you don't generate documentation locally you can remove this line.
doc/api/
### Dart template
# See https://www.dartlang.org/tools/private-files.html
# Files and directories created by pub
# SDK 1.20 and later (no longer creates packages directories)
# Older SDK versions
# (Include if the minimum SDK version specified in pubsepc.yaml is earlier than 1.20)
.project
.buildlog
**/packages/
# Files created by dart2js
# (Most Dart developers will use pub build to compile Dart, use/modify these
# rules if you intend to use dart2js directly
# Convention is to use extension '.dart.js' for Dart compiled to Javascript to
# differentiate from explicit Javascript files)
*.dart.js
*.part.js
*.js.deps
*.js.map
*.info.json
# Directory created by dartdoc
# Don't commit pubspec lock file
# (Library packages only! Remove pattern if developing an application package)
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
## VsCode
.vscode/
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
.idea/
/out/
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

12
packages/model/AUTHORS.md Normal file
View file

@ -0,0 +1,12 @@
Primary Authors
===============
* __[Thomas Hii](dukefirehawk.apps@gmail.com)__
Thomas is the current maintainer of the code base. He has refactored and migrated the
code base to support NNBD.
* __[Tobe O](thosakwe@gmail.com)__
Tobe has written much of the original code prior to NNBD migration. He has moved on and
is no longer involved with the project.

View file

@ -0,0 +1,77 @@
# Change Log
## 8.1.1
* Updated repository link
## 8.1.0
* Updated `lints` to 3.0.0
* Fixed analyser warnings
## 8.0.0
* Require Dart >= 3.0
## 7.1.0
* Return -1 instead of throwing exception when id is null
* Added `idAsString` to return id or "" if null
* Added `AuditableModel`
## 7.0.0
* Require Dart >= 2.17
## 6.0.0
* Require Dart >= 2.16
## 5.0.0
* Skipped release
## 4.0.0
* Skipped release
## 3.1.1
* Removed `error`
## 3.1.0
* Updated linter to `package:lints`
## 3.0.2
* Updated README
* Updated `idAsInt` to return `-1` instead of `null` for invalid id
## 3.0.1
* Updated README
## 3.0.0
* Migrated to support Dart >= 2.12 NNBD
## 2.0.0
* Migrated to work with Dart >= 2.12 Non NNBD
## 1.0.3
* `idAsInt` returns `null` when `id` is `null`.
## 1.0.2
* `idAsInt` now uses `int.tryParse`.
## 1.0.1
* Add `idAsInt`.
## 1.0.0+1
* Update constraint to work with Dart 2.

29
packages/model/LICENSE Normal file
View file

@ -0,0 +1,29 @@
BSD 3-Clause License
Copyright (c) 2021, dukefirehawk.com
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

19
packages/model/README.md Normal file
View file

@ -0,0 +1,19 @@
# Angel3 Data Model
![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_model?include_prereleases)
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
[![License](https://img.shields.io/github/license/dart-backend/angel)](https://github.com/dart-backend/angel/tree/master/packages/model/LICENSE)
The basic data models for Angel3 framework.
```dart
import 'package:angel3_model/angel3_model.dart';
```
The available data models are:
* `Model` class
* A basic data model
* `AuditableModel` class
* A basic data model with audit log feature

View file

@ -0,0 +1,2 @@
include: package:lints/recommended.yaml

View file

@ -0,0 +1,19 @@
import 'package:platform_model/platform_model.dart';
void main() {
var todo = Todo(id: '34', isComplete: false);
print(todo.idAsInt == 34);
}
class Todo extends Model {
String? text;
bool isComplete;
Todo(
{required String super.id,
this.text,
this.isComplete = false,
super.createdAt,
super.updatedAt});
}

View file

@ -0,0 +1,35 @@
/// Represents a generic data model with an ID and timestamps.
class Model {
/// A unique identifier corresponding to this item.
String? id;
/// The time at which this item was created.
DateTime? createdAt;
/// The last time at which this item was updated.
DateTime? updatedAt;
Model({this.id, this.createdAt, this.updatedAt});
/// Returns the [id], parsed as an [int].
int get idAsInt => id != null ? int.tryParse(id ?? "-1") ?? -1 : -1;
/// Returns the [id] or "" if null.
String get idAsString => id ?? "";
}
/// Represents a generic data model with audit log feature.
class AuditableModel extends Model {
/// The authorized user who created the record.
String? createdBy;
/// The user who updated the record last time.
String? updatedBy;
AuditableModel(
{super.id,
super.createdAt,
this.createdBy,
super.updatedAt,
this.updatedBy});
}

View file

@ -0,0 +1,9 @@
name: platform_model
version: 9.0.0
description: Angel3 basic data model class, no longer with the added weight of the whole framework.
homepage: https://angel3-framework.web.app/
repository: https://github.com/dart-backend/angel/tree/master/packages/model
environment:
sdk: '>=3.3.0 <4.0.0'
dev_dependencies:
lints: ^4.0.0