/gofar

Dynamic Headless API built with GraphQL for chill dev

Primary LanguageGoMIT LicenseMIT

Gofar

Motivasi

Tujuan yang dicapai adalah membuat Interface API yang dinamis dan ramah untuk developer dan beberapa driver database seperti MongoDB, Mysql, etc..

Contoh penggunaan

Kita definisikan dulu model database dan konfigurasi lain nya di file schema.yaml

Seperti contoh berikut

name: Toko Kaset Hilman
version: v1.0.0
port: 3001
graphql:
  path: /query
  playground: /__playground
models:
  User:
    email: string `types:"unique;true" validate:"require,unique"`
    phone: string `types:"unique;true" validate:"require,unique"`
    password: string `validate:"require,min:10" hide:"true"`
    role: Role
    __options:
      module_auth: true
  Role:
    name: string
    slug: string `types:"unique;true" validate:"require,unique"`
    users:
      - User
  Song:
    title: string
    length: number
    band: Band
    album: Album
  Album:
    name: string
    year: number
    band: Band
    songs:
      - Song
    tags:
      - string
  Artist:
    name: string
    Band: Band
  Band:
    name: string
    artists:
      - Artist
    albums:
      - Album

Dengan melakukan perintah

go run github.com/pedox/gofar/server

secara otomatis Schema akan terbentuk di database (BELUM DI IMPLEMENTASI)

Dan GraphQL Playground dapat diakses di http://localhost:3001/__playground

EARLY STAGE

Sebenernya ini baru cuma berupa Proof of Concept dimana kedepan nya akan ada beberapa fitur dan module yang perlu dikembangkan diantara nya.

  • Middleware Authentication
  • Middleware Roles
  • Basic CRUD
  • ACL
  • Role based Model
  • Seamless Database Migration
  • Hook

Beberapa modul go yang digunakan