ssp

package module
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2022 License: MIT Imports: 7 Imported by: 0

README

gormssp

Using Datatables pagination with golang

Build Status Go Report Card codecov MIT licensed GoDoc PkgGoDev GitHub release (latest by date)

Pre-requisites 📋

This package use the new version of gorm in https://github.com/go-gorm/gorm, for previous version, go to https://github.com/juaismar/gormssp

Database compatible: Postgres (stable), SQLite (without REGEXP)

Installation 🔧

Install with the next command:

go get github.com/juaismar/go-gormssp

and import the package with:

import ("github.com/juaismar/go-gormssp")

Working example 🚀

A working example on https://github.com/juaismar/go-GormSSP_Example

-This is a simple code that sends data to the Datatables JS client.

import ("github.com/juaismar/go-gormssp")

func (c *User) Pagination() {

  // Array of database columns which should be read and sent back to DataTables.
  // The `db` parameter represents the column name in the database, while the `dt`
  // parameter represents the DataTables column identifier. In this case simple
  // indexes but can be a string
  // Formatter is a function to customize the value of field , can be nil.
  columns := []SSP.Data{
    SSP.Data{Db: "name", Dt: 0, Formatter: nil},
    SSP.Data{Db: "role", Dt: 1, Formatter: nil},
    SSP.Data{Db: "email", Dt: 2, Formatter: nil},
  }

  // Send the data to the client
  // "users" is the name of the table
  c.Data["json"], _ = SSP.Simple(c, model.ORM, "users", columns)
  c.ServeJSON()
}

-This is an example of data formatting.

SSP.Data{Db: "registered", Dt: 3, Formatter: func(
  data interface{}, row map[string]interface{}) (interface{}, error) {
  //data is the value id column, row is a map whit the values of all columns
  if data != nil {
    return data.(time.Time).Format("2006-01-02 15:04:05"), nil
  }
  return "", nil
}}

-This is a complex example.

import ("github.com/juaismar/go-gormssp")

func (c *User) Pagination() {
    columns := []SSP.Data{
      SSP.Data{Db: "id", Dt: "id", Formatter: nil},
    }
	
    //whereResult is a WHERE condition to apply to the result set
    //whereAll is a WHERE condition to apply to all queries
    var whereResult []string
    var whereAll []string
    var whereJoin = make(map[string]string, 0)
    whereAll = append(whereAll, "deleted_at IS NULL")

    c.Data["json"], _ = SSP.Complex(c, model.ORM, "events", columns, whereResult, whereAll, whereJoin)
    c.ServeJSON()
}

-This project is based in the PHP version of datatables pagination in https://datatables.net/examples/data_sources/server_side -Original file can be found in https://github.com/DataTables/DataTables/blob/master/examples/server_side/scripts/ssp.class.php

Author ✒️

Thanks 🎁

Readme.md based in https://gist.github.com/Villanuevand/6386899f70346d4580c723232524d35a

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckReserved

func CheckReserved(columnName string) string

CheckReserved Skip reserved words

func DrawNumber added in v0.1.1

func DrawNumber(c Controller) int

DrawNumber Get drawNumber

func ParamToBool added in v0.1.1

func ParamToBool(c Controller, paramName string) (requestRegex bool)

ParamToBool get a param and parse it to bool

Types

type Controller

type Controller interface {
	GetString(string, ...string) string
}

Controller emulate the beego controller

type Data

type Data struct {
	Db        string                                                                  //name of column
	Dt        interface{}                                                             //id of column in client (int or string)
	Cs        bool                                                                    //case sensitive - optional default false
	Formatter func(data interface{}, row map[string]interface{}) (interface{}, error) // - optional
}

Data is a line in map that link the database field with datatable field

type MessageDataTable

type MessageDataTable struct {
	Draw            int           `json:"draw"`
	RecordsTotal    int64         `json:"recordsTotal"`
	RecordsFiltered int64         `json:"recordsFiltered"`
	Data            []interface{} `json:"data,nilasempty"`
}

MessageDataTable is theresponse object

func Complex

func Complex(c Controller, conn *gorm.DB, table string, columns []Data,
	whereResult []string,
	whereAll []string,
	whereJoin map[string]string) (responseJSON MessageDataTable, err error)

Complex is a main method, externally called

func Simple

func Simple(c Controller, conn *gorm.DB,
	table string,
	columns []Data) (responseJSON MessageDataTable, err error)

Simple is a main method, externally called

Directories

Path Synopsis
test
dbs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL