Module server.Funktion

Funktion - CASYMIR REST API Standard Funktionen (Intern)

Functions

RESTFunktion.err (severity, msg, ...) err erzeugt eine Error meldung im Casy log mit Nummerierter ausgabe
RESTFunktion.sql_check_errors (conn[, errmsge]) sql_check Prüft ob in der SQL Verbindung ein fehler besteht
RESTFunktion.QuerySplit (query[, sort]) QuerySplit Erzeugt eine Table aus dem Querystring
RESTFunktion.casylog (log[, t]) casylog Erzeugt einen Eintrag im Casylog, Table werden Rekursiv ausgefürt
RESTFunktion.Reflink (T, Verweis, ID[, methode[, Verweisrel[, parameter]]]) Reflink Durchsucht eine Tabelle nach der ID und erzeugt einen links abschnitt Der Link wird auf die Ebene der ID angefügt
RESTFunktion.isoMappingTo639 (T, ID) ISO Mapping zu ISO-639-2B AdrSprache (Ausgang) von Casy intern zu ISO Standard
RESTFunktion.isoMappingFrom639 (T, ID) ISO Mapping von ISO-639-2B AdrSprache (Eingang) von ISO Standard zu Casy Intern
RESTFunktion.isoMappingTo3166 (T, ID) ISO Mapping zu ISO 3166 ALPHA-2 OrtLand (Ausgang) von Casy intern zu ISO Standard
RESTFunktion.isoMappingFrom3166 (T, ID) ISO Mapping From ISO 3166 ALPHA-2 OrtLand (Eingang) von ISO Standard zu Casy Intern
RESTFunktion.mustenter (T, ID[, mehrstufig]) Muss Felder im Body
RESTFunktion.sql_table (DB, sql[, UTC]) Abruf SQl Befehl aus Datenbank $VARIABLE werden ersetzen aus den Local(prio), Global(sec) else ''
RESTFunktion.Debug (Variable[, Text[, endl[, textausgabe]]]) Debug Erzeugt ab Level 6 Casylog einträge, ab 7 Wird eine Datei Angelegt Webzugriff
RESTFunktion.SortSql (queryStr) SortSql ersetzt das vorzeichen welches vom Query stammt durch ein sql Code Interne Funktion von QuerySplit
RESTFunktion.Status (code) Statusmeldungen werden vorm Header senden umgemapt, DB Log des Status erfolgt vor Mapping https://support.casymir.ch/wiki/doku.php?id=support:optools:technotes:restapi#head
RESTFunktion.errBody (Status, msg, Daten) Standard Error Meldung für Head und Body
RESTFunktion.TmpFilename ([Prefix[, Ext]]) TmpFilename erzeugen.
RESTFunktion.CreateTmpFile ([Prefix[, Ext[, methode]]]) TmpFile kreieren.


Functions

RESTFunktion.err (severity, msg, ...)
err erzeugt eine Error meldung im Casy log mit Nummerierter ausgabe

Parameters:

  • severity int Grad der Meldung Only 10
  • msg string Meldung die immer ausgegeben wird
  • ... string Meldungen die nach Grade ausgegeben werden
RESTFunktion.sql_check_errors (conn[, errmsge])
sql_check Prüft ob in der SQL Verbindung ein fehler besteht

Parameters:

  • conn userdata -- DB verbindung welche auf Fehler und Mitteilungen geprüft wird
  • errmsge string fehlermeldung (optional)

Returns:

    string Error Message

Usage:

    local errmsg = RESTFunktion.sql_check_errors(conn,err)
       if errmsg then
         retBody['error_description']
           = 'Endpunkt DB Fehler: sql_check_errors ' .. tostring(errmsg)
        return retBody
       end
RESTFunktion.QuerySplit (query[, sort])
QuerySplit Erzeugt eine Table aus dem Querystring

Parameters:

  • query string Verarbeitung des Query string von der URL
  • sort bool Sortierung +- in sql umwandeln (optional)

Returns:

    table

Usage:

    GET /www/artikel/C202?waehrabk=EUR&debinr=123456
    query = RESTFunktion.QuerySplit(QueryStr,true)
    local field = query.fields [nil]
    local sort = query.sorts [nil]
    local waehrabk = query.waehrabk ['EUR']
    local debinr = query.debinr ['123456']
    
    Optional kann die Sortierung +- in SQL String umgewandelt werden 
RESTFunktion.casylog (log[, t])
casylog Erzeugt einen Eintrag im Casylog, Table werden Rekursiv ausgefürt

Parameters:

  • log mix Inhalt zum Casylog
  • t string Bezeichnung (optional)

Usage:

  • local debiNr = '123456'
    RESTFunktion.casylog(debiNr,'Nummer Debi')
    
    May 17 17:31:41 victoria ?: (kommerz) 20733 - Nummer Debi: 123456
  • local t = {debiNr = '123456',kredNr = '654321'}
    RESTFunktion.casylog(t)
    
    May 17 17:31:41 victoria ?: (kommerz) 20733 - debiNr: 123456
    May 17 17:31:41 victoria ?: (kommerz) 20733 - kredNr: 654321
RESTFunktion.Reflink (T, Verweis, ID[, methode[, Verweisrel[, parameter]]])
Reflink Durchsucht eine Tabelle nach der ID und erzeugt einen links abschnitt Der Link wird auf die Ebene der ID angefügt

Parameters:

  • T table -- Tabele welche Rekursiv durchsucht wird
  • Verweis string -- Auf welche URI Verweist wird ohne Pattern
  • ID string -- Wert der die Pattern abbildet
  • methode string/table -- Methode mit welcher der Link geht default GET (optional)
  • Verweisrel string -- Bedeutung Link, Relation kann leerzeichen Enthalten (optional)
  • parameter table -- '{parameter,feld mit wert}' (optional)

Returns:

    table

Usage:

    data, err = RESTFunktion.sql_table(DB,_sql)
    data = RESTFunktion.Reflink(data,'artikel/','ArtNr'.'GET')
    data = RESTFunktion.Reflink(data,'artikel/','ArtNr'.{'GET','PATCH'})
    data = RESTFunktion.Reflink(data,'artikel/','ArtNr')
    "links": [
      {
        "rel": "artikel/",
        "type": "GET",
        "href": "https://casyrest.opag.loc/www/artikel/C202"
      }
     ]
RESTFunktion.isoMappingTo639 (T, ID)
ISO Mapping zu ISO-639-2B AdrSprache (Ausgang) von Casy intern zu ISO Standard

Parameters:

  • T table -- Daten Tabel welches durchsucht wird
  • ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping

Returns:

    table T -- Modifizierte

Usage:

    data, err = RESTFunktion.sql_table(DB,_sql)
    print(data["AdrSprache"]) = "D"
    data = RESTFunktion.isoMappingTo639(data,'AdrSprache')
    print(data["AdrSprache"]) = "ger"
RESTFunktion.isoMappingFrom639 (T, ID)
ISO Mapping von ISO-639-2B AdrSprache (Eingang) von ISO Standard zu Casy Intern

Parameters:

  • T table -- Daten Tabel welches durchsucht wird
  • ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping

Returns:

    table T -- Modifizierte

Usage:

    print(BodyTable["AdrSprache"]) = "ger"
    BodyTable = RESTFunktion.isoMappingFrom639(BodyTable,'AdrSprache')
    print(BodyTable["AdrSprache"]) = "D"
RESTFunktion.isoMappingTo3166 (T, ID)
ISO Mapping zu ISO 3166 ALPHA-2 OrtLand (Ausgang) von Casy intern zu ISO Standard

Parameters:

  • T table -- Daten Tabel welches durchsucht wird
  • ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping

Returns:

    table T -- Modifizierte

Usage:

    data, err = RESTFunktion.sql_table(DB,_sql)
    print(data["OrtLand"]) = "CH"
    data = RESTFunktion.isoMappingTo3166(data,'AdrSprache')
    print(data["OrtLand"]) = "CH"
RESTFunktion.isoMappingFrom3166 (T, ID)
ISO Mapping From ISO 3166 ALPHA-2 OrtLand (Eingang) von ISO Standard zu Casy Intern

Parameters:

  • T table -- Daten Tabel welches durchsucht wird
  • ID string -- Bezeichnung, Inhalt wird ersetzt durch Mapping

Returns:

    table T -- Modifizierte

Usage:

    print(BodyTable["OrtLand"]) = "DE"
    BodyTable = RESTFunktion.isoMappingFrom3166(BodyTable,'AdrSprache')
    print(BodyTable["OrtLand"]) = "D"
RESTFunktion.mustenter (T, ID[, mehrstufig])
Muss Felder im Body

Parameters:

  • T table --Orginal Table welches geprüft wird
  • ID table -- Felder die vorhanden sein müssen. Beispiel: {'OrtPLZ',{'AdrFirma','AdrName'}} OrtPLZ muss vorhanden, (AdrFirma oder AdrName)
  • mehrstufig boolean -- Suche nur in der ersten Ebene oder rekursiv default false (optional)

Returns:

    boolean -- false kein fehler else table mit Fehlenden Angaben

Usage:

    local _mussField =
       {'KontaktAdr','WaehrAbk','FAKTZahlArt'}
    
       data = RESTFunktion.mustenter(BodyTable,_mussField,false)
    
       if data then
         status = 26
         msg = 'There are missing fields '
         retBody = {
           success = success,
           ['msg'] = tostring(msg),
           ['Status'] = status,
           ['Data'] = {
             ['mustenter'] = _mussField,
             ['missing'] = data
             }
         }
         return retBody
       end
RESTFunktion.sql_table (DB, sql[, UTC])
Abruf SQl Befehl aus Datenbank $VARIABLE werden ersetzen aus den Local(prio), Global(sec) else ''

Parameters:

  • DB userdata
    • Datenbank verbindung
  • sql string
    • Sql zum ausführen
  • UTC boolean
    • Modified_UTC Zeit umrechnen default false
    (optional)

Returns:

  1. table
    • ausgabe sql
  2. err -Error Msg or nil

Usage:

    local AdrNr = 123
    local PH ='ERTZ'
    local key = 'tzui'
    _sql = [[
      select a.AdrNr
      from Adressen a, FirmHist ph, Kunde k
      where a.AdrNr = $AdrNr
        and ph.PHKey = '$PH'
        and ph.AbDatum <= getdate() and getdate() <= isnull(ph.BisDatum, getdate())
        and ph.FirmenID = k.FirmenID
        and ph.Contents = '$key'
        and (k.KundLief = $AdrNr
          or k.KundRech = $AdrNr
          or k.KundKontakt = $AdrNr)
    ]]
    local Pdata, err = RESTFunktion.sql_table(DB,_sql)
      if err then
        status = 22
        msg = 'DB Error from Endpoint: '.. tostring(err)
        retBody = {
          success = success,
          ['msg'] = tostring(msg),
          ['Status'] = status,
          ['Data'] = data
        }
        return retBody
      end
RESTFunktion.Debug (Variable[, Text[, endl[, textausgabe]]])
Debug Erzeugt ab Level 6 Casylog einträge, ab 7 Wird eine Datei Angelegt Webzugriff

Parameters:

  • Variable mix wird Ausgegeben bei table findet eine Rekursion
  • Text string Bezeichnungstext zum ersten parameter (optional)
  • endl int Fügt die Anzahl der Zeilen umbrüche hinzu (optional)
  • textausgabe bool intern use bei Rekursion ob Text ausgeben werden soll (optional)

Usage:

    local Status = 22
    RESTFunktion.Debug(Status,'Status',1)
RESTFunktion.SortSql (queryStr)
SortSql ersetzt das vorzeichen welches vom Query stammt durch ein sql Code Interne Funktion von QuerySplit

Parameters:

  • queryStr string sucht Zeichen vor dem Text und ersetzt diese am ende

Returns:

    string
RESTFunktion.Status (code)
Statusmeldungen werden vorm Header senden umgemapt, DB Log des Status erfolgt vor Mapping https://support.casymir.ch/wiki/doku.php?id=support:optools:technotes:restapi#head

Parameters:

  • code int,string Interne Code umwandlung in HTTPStatus

Returns:

    int HTTP Status Code
RESTFunktion.errBody (Status, msg, Daten)
Standard Error Meldung für Head und Body

Parameters:

  • Status int -- Nummer für den Status
  • msg string -- Meldeung welche erscheint
  • Daten mix -- Daten die angehängt werden sollen body

Returns:

    table -- Tabelle welche direkt an return gegeben werden kann

Usage:

    Waehr, err = RESTFunktion.sql_table(DB,_sql,false)
    if err then
      return RESTFunktion.errBody(22,'DB Error from Endpoint: ' .. tostring(err),Waehr)
    end
RESTFunktion.TmpFilename ([Prefix[, Ext]])
TmpFilename erzeugen. Erzeugt einen Pfadnamen für eine temporäre Datei.

Parameters:

  • Prefix string
    • Dateiname Vorspann, Default nil
    (optional)
  • Ext string
    • Dateiname Abspann z.B '.pdf', Default nil
    (optional)

Returns:

    Filename
    • Dateiname

Usage:

    RESTFunktion.TmpFilename('Test_','.pdf')
    Test_lua_q9VA6Y.pdf
    
    local basename = RESTFunktion.TmpFilename()
    if not basename then
      return RESTFunktion.errBody(26, 'Cannot create Tempdir')
    end
    
    -- basename == /home/kommerz/tmp/lua_q9VA6Y
    
RESTFunktion.CreateTmpFile ([Prefix[, Ext[, methode]]])
TmpFile kreieren. Erzeugt eine temporäre Datei und öffnet diese zum Beschreiben.

Parameters:

  • Prefix string
    • Dateiname Vorspann, Default nil
    (optional)
  • Ext string
    • Dateiname Abspann z.B '.pdf', Default nil
    (optional)
  • methode string
    • Default 'w' @see https://www.casymir.ch/files/gtkdoc3/lua/manual.html#pdf-io.open
    (optional)

Returns:

  1. Datei
    • Filehandle
  2. FilePath
    • DateiPath/Name

Usage:

    local file, basename = RESTFunktion.CreateTmpFile('Test_','.pdf','wb')
    
    if not file then
      return RESTFunktion.errBody(26, 'Cannot create Tempfile')
    end
    
    -- file == file (0xe96250) '/home/kommerz/log/tmp/Test_lua_q9VA6Y.pdf'
    -- basename == /home/kommerz/log/tmp/lua_q9VA6Y
    
    file:write('abc')
    file:close()
generated by LDoc 1.4.6 Last updated 2024-12-22 09:39:14