JSPM

laravel-me

0.0.5
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q23428F
  • License MIT

CRUD for laravel

Package Exports

  • laravel-me

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (laravel-me) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Laravel-Me

A Javascript (Typescript) package for make requests to laravel as simple as possible!

⚙️ Installation

Install the package by running

npm install laravel-me

Use it by importing the package wherever your want:

import Model from 'laravel-me';

🎓 How it works

Our advise it's to create a new class that extends the Model class, for example we can create a new User class to handle the Laravel User Model.

import Model from 'laravel-me';
import { AxiosResponse } from 'axios';

class User extends Model {
    constructor(attributes: Object = {}) {
        super(attributes);
        this._options.resourceName = 'users';
        this._options.routeKeyName = 'id';
        this._options.apiBaseUrl = '/';
        this._options.apiUrl = '/users';

        this.setOptions();
    }
}

Now we can make create, read, update, or delete (CRUD) requests:

async function findUser(id: string|number): Promise<AxiosResponse> {
    const user = new User();
    return await user.get(id);
};

async function createUser(attributes: Object): Promise<AxiosResponse> {
    const user = new User(attributes);
    return await user.save(); // or return await user.create();
};

async function updateUser(id: string|number, data: Object): Promise<AxiosResponse> {
    const user = new User({
        id,
        ...data
    });
    return await user.save(); // or return await user.update();
};

async function deleteUser(id: string|number): Promise<AxiosResponse> {
    return await new User({ id }).delete();
};

export default async function main() {
    const attributes = {
        name: 'Mauro',
        email: 'mauro@email.com',
        password: 'K33pTh3S3cr3t'
    };
    console.log(`1 - Create a new user`);
    const userCreate = await createUser(attributes);
    console.log(userCreate.data);
    console.log(`2 - Update the user`);
    const userUpdate = await updateUser(userCreate.data.id, { name: 'Mauro Erta' });
    console.log(userUpdate.data);
    console.log(`3 - Find the user`);
    const userFind = await findUser(userCreate.data.id);
    console.log(userFind.data);
    console.log(`4 - Delete the user`);
    const userDelete = await deleteUser(userCreate.data.id);
    console.log(userDelete.data);
}

The log of this script will be something like:

1 - Create a new user 
{
  created_at: "2019-09-21 08:59:08"
  email: "mauro@vlkstudio.com"
  id: 9
  name: "Mauro"
  updated_at: "2019-09-21 08:59:08"
}
2 - Update the user
{
    created_at: "2019-09-21 08:59:08"
  email: "mauro@vlkstudio.com"
  email_verified_at: null
  id: 9
  name: "Mauro Erta"
  updated_at: "2019-09-21 08:59:08"
}
3 - Find the user
{
    created_at: "2019-09-21 08:59:08"
    email: "mauro@vlkstudio.com"
    email_verified_at: null
    id: 9
    name: "Mauro Erta"
    updated_at: "2019-09-21 08:59:08"
}
4 - Delete the user
{
    message: "User successfully deleted"
}