Skip to content

Commit

Permalink
Merge pull request #3 from yeikel16/deta-base
Browse files Browse the repository at this point in the history
feat: create methods to interact with `DetaBase`
  • Loading branch information
yeikel16 committed Jan 24, 2022
2 parents cfcc962 + 5981964 commit 45b513e
Show file tree
Hide file tree
Showing 9 changed files with 1,484 additions and 99 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
.dart_tool/
.packages
build/
pubspec.lock
pubspec.lock
coverage/
148 changes: 143 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,149 @@
# deta
# Deta

[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link]
[![License: MIT][license_badge]][license_link]
[![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link] [![License: MIT][license_badge]][license_link] [![coverage][coverage_badge]][ci_link]

A Very Good Project created by Very Good CLI.
---

A Dart package to interact with the [HTTP API](https://docs.deta.sh/) of the free services of the [Deta](https://deta.sh/) plataform.

## Getting Started

Check the full example [here](https://github.com/yeikel16/deta-dart/blob/main/example/deta_base_example.dart).

### Install

Add to dependencies on `pubspec.yaml`:

```yaml
dependencies:
deta:
git:
url: https://github.com/yeikel16/deta-dart.git
```

### Usege

We declare class **Deta**, which receives our private credential as a parameter.

```dart
final deta = Deta(projectKey: 'projectKey', dio: Dio());
```

🚨 **WARNING** 🚨
Your `projectKey` is confidential and meant to be used by you. Anyone who has your project key can access your database. Please, do not share it or commit it in your code.

### DetaBase

`DetaBase` is a fully-managed, fast, scalable and secure NoSQL database with a focus on end-user simplicity.

We define our `DetaBase`, with witch we are going to interact through the `base` method that receives the name of the `DetaBase` as a parameter. In case not exist it will be created instantly on first use, you can create as many `DetaBase` as you need.

A `DetaBase` instance is a collection of data, not unlike a Key-Value store, a MongoDB collection or a PostgreSQL/MySQL table.

```dart
final detabase = deta.base('lenguages');
```

#### Methods

##### put

Save an item. It will update an item if the key already exists.

```dart
await detabase.put({
'key': 'dart-g',
'name': 'Dart',
'description':
'Dart is a general-purpose programming language that adds strong '
'support for modularity, co-variant return types, and a strong '
'emphasis on type safety.',
'creator': 'Google',
'year': 2012,
});
```

##### putMany

Saves a list the elements, this list can only have a maximum of 20 element.

```dart
await detabase.putMany(
items: lenguages.map((lenguage) => lenguage.toJson()).toList(),
);
```

##### insert

Saves an element like `put`, with the difference that if this element exists in `DetaBase` it will throw an `DetaObjectException`. The `key` required that are part of the elemet to be saved.

```dart
await detabase.insert({
'key': 'r-f',
'name': 'R',
'description': 'R is a programming language and software environment '
'for statistical computing and graphics.',
'creator': 'R Foundation',
'year': 1995,
});
```

##### update

Update the element from the supplied `key`, you have to pass the whole element, both the updated and unchanged parameters.

```dart
await detabase.update(
key: 'ruby-ym',
item: <String, dynamic>{
'key': 'ruby-ym',
'name': 'Ruby',
'description': 'Ruby is a dynamic, open source, general-purpose '
'programming language with a focus on simplicity and productivity.',
'creator': 'Yukihiro Matsumoto',
'year': 1995,
},
);
```

##### get

Get a spesific element form the key.

```dart
final item = await detabase.get('dart-g');
```

##### delete

Delete a spesific element from the key.

```dart
final wasDeleted = await detabase.delete('ruby');
```

##### fetch

Return all saved items if no `query` is specified.

```dart
final all = await detabase.fetch();
```

Return all element that matched the indicated `query`.

```dart
final result = await detabase.fetch(
query: [DetaQuery('year').lessThanOrEqualTo(2000).and('name').prefix('C')],
);
```

A Very Good Project created by [Very Good CLI](https://github.com/VeryGoodOpenSource/very_good_cli).

[ci_link]: https://github.com/VeryGoodOpenSource/very_good_cli/actions
[coverage_badge]: https://raw.githubusercontent.com/VeryGoodOpenSource/very_good_cli/main/coverage_badge.svg
[license_badge]: https://img.shields.io/badge/license-MIT-blue.svg
[license_link]: https://opensource.org/licenses/MIT
[logo]: https://docs.deta.sh/img/logo.svg
[very_good_analysis_badge]: https://img.shields.io/badge/style-very_good_analysis-B22C89.svg
[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis
[very_good_analysis_link]: https://pub.dev/packages/very_good_analysis

0 comments on commit 45b513e

Please sign in to comment.