# task-service

> a task service

Latest version **1.0.4** (published 2023-01-24) · ISC license · 0 weekly downloads

## Install

```sh
npm install task-service
pnpm add task-service
yarn add task-service
bun add task-service
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2023-01-24 |
| First published | 2022-11-20 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 25.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | fwg |
| Maintainers | adf0001 |
| Keywords | task, service |

## Links

- npm: https://www.npmjs.com/package/task-service
- Repository: https://github.com/adf0001/task-service
- Homepage: https://github.com/adf0001/task-service#readme
- Issues: https://github.com/adf0001/task-service/issues
- npm.io page: https://npm.io/package/task-service

## Recent versions

- 1.0.4 (latest) — 2023-01-24
- 1.0.3 — 2023-01-17
- 1.0.2 — 2023-01-06
- 1.0.1 — 2022-11-21
- 1.0.0 — 2022-11-20

## README

# task-service
a task service

# Install
```
npm install task-service
```

# Usage example
```javascript
var better_sqlite3 = require("better-sqlite3");
var express = require("express");
var task_service = require("task-service");

var db = new better_sqlite3(...);

// prepare table
//task_service["better-sqlite3-api"].prepareTable(db, "test_tasks");  //can be set to be called at .getApi()

// get api
var api = task_service["better-sqlite3-api"].getApi(db, { tableName: "test_tasks", prepare: true });
var service = task_service.loadService(express.Router(), api);

var app = express();
app.use("/test-tasks", service);

var svr = http.createServer(app);
svr.listen(9900, "127.0.0.1", () => {
  //create task
  var req = http.request(
    { host: "127.0.0.1", port: 9900, path: "/test-tasks/", method: "POST" },
    ...
  );

  req.setHeader("CONTENT-TYPE", "application/json");
  req.write(JSON.stringify({ title: "title", expire_at: "2022-12-31 00:00:00" }));
  req.end();
});

```

# Table Convention
```sql
CREATE TABLE IF NOT EXISTS ${tableName} (
	id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
	title TEXT NOT NULL,
	updated_at DATETIME NOT NULL,	-- UTC+0
	created_at DATETIME NOT NULL,	-- UTC+0
	expire_at DATETIME NOT NULL,	-- UTC+0
	done_at DATETIME		-- UTC+0
);
```

# Api Convention
```text

*  create one
  .create(row, cb)
    row
      {
        title: "title",
        expire_at: "YYYY-MM-dd hh:mm:ss",		//UTC+0
      }
    cb
      (err,rows)=>{...}
        rows: [ row1, row2, ... ]

* update one
  .update(row, cb)

* update one, done_at, update `done_at` to current time
  .updateDoneAt(id, cb)

* delete one
  .delete(id, cb)
    * return the deleted row in cb

* read one
  .read(id, cb)

* read all
  .readAll(cb)

* read all expire
  .readExpire(expire_at | null, cb)

```

# Url Convention
```text

* response
  {
    msg: "OK",
    rows: ...
  }
 
  or

  {
    error: "error"
  }

* create one, POST	/
  * data: row

* update one,	PUT	/
  * data: row

* update one, done_at,	PUT	/{id}/done		//update `done_at` to current time

* delete one,	DELETE	/{id}

* read one,	GET		/{id}

* read all,	GET		/

* read all, expire,	GET		/expire/YYYY-MM-dd hh:mm:ss
* read all, expire,	GET		/expire/all

```

---
_Source: https://npm.io/package/task-service · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
