SSP

package module
v0.2.6 Latest Latest
Warning

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

Go to latest
Published: Nov 19, 2020 License: MIT Imports: 10 Imported by: 0

README

gormssp

Using Datatables pagination with golang

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

Pre-requisites 📋

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

Installation 🔧

Install whit the next command:

go get github.com/juaismar/gormssp

and import the package with:

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

Working example 🚀

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

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

import ("github.com/juaismar/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 := make(map[int]SSP.Data)
  columns[0] = SSP.Data{Db: "name", Dt: 0, Formatter: nil}
  columns[1] = SSP.Data{Db: "role", Dt: 1, Formatter: nil}
  columns[2] = 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 a example of data formatting.

columns[3] = SSP.Data{Db: "registered", Dt: 3, Formatter: func(
  data interface{}, row map[string]interface{}) interface{} {
  //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")
  }
  return ""
}}

-This is a complex example.

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

func (c *User) Pagination() {
    columns := make(map[int]SSP.Data)
    columns[0] = 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
    whereAll = append(whereAll, "deleted_at IS NULL")

    c.Data["json"] = SSP.Complex(c, model.ORM, "events", columns, whereResult, whereAll)
    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 ComplexFunctionTest added in v0.2.4

func ComplexFunctionTest(db *gorm.DB)

func FunctionsTest added in v0.2.4

func FunctionsTest()

func RegExpTest added in v0.2.4

func RegExpTest(db *gorm.DB)

func SimplexFunctionTest added in v0.2.4

func SimplexFunctionTest(db *gorm.DB)

func TestTypes added in v0.2.6

func TestTypes(db *gorm.DB)

Types

type Controller added in v0.2.4

type Controller struct {
	Params map[string]string
}

func (*Controller) GetString added in v0.2.4

func (c *Controller) GetString(key string, def ...string) string

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{} // - optional
}

type MessageDataTable

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

func Complex

func Complex(c interface {
	GetString(string, ...string) string
}, conn *gorm.DB, table string, columns map[int]Data,
	whereResult []string, whereAll []string) MessageDataTable

func Simple

func Simple(c interface {
	GetString(string, ...string) string
}, conn *gorm.DB,
	table string,

	columns map[int]Data) MessageDataTable

Directories

Path Synopsis
test
dbs

Jump to

Keyboard shortcuts

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