Coder Social home page Coder Social logo

labkey-api-perl's Introduction

NAME

LabKey::Query

SYNOPSIS

use LabKey::Query;
my $results = LabKey::Query::selectRows(
        -baseUrl => 'http://labkey.com:8080/labkey/',
        -containerPath => 'myFolder/',
        -schemaName => 'lists',
        -queryName => 'mid_tags',
);
        

ABSTRACT

For interacting with data in LabKey Server

DESCRIPTION

This module is designed to simplify querying and manipulating data in LabKey Server. It should more or less replicate the javascript APIs of the same names.

After the module is installed, if you need to login with a specific user you will need to create a .netrc file in the home directory of the user running the perl script.

In API versions 0.08 and later, you can specify the param '-loginAsGuest' which will query the server without any credentials. The server must permit guest to that folder for this to work though.

FUNCTIONS

selectRows()

selectRows() can be used to query data from LabKey server

The following are the minimum required params:

my $results = LabKey::Query::selectRows(
        -baseUrl => 'http://labkey.com:8080/labkey/',
        -containerPath => 'myFolder/',
        -schemaName => 'lists',
        -queryName => 'mid_tags',
);

The following are optional:

-viewName => 'view1',
-filterArray => [
        ['file_active', 'eq', 1], 
        ['species', 'neq', 'zebra']
], #allows filters to be applied to the query similar to the labkey Javascript API.
-parameters => [
        ['enddate', '2011/01/01'], 
        ['totalDays', 15]
], #allows parameters to be applied to the query similar to the labkey Javascript API.  
-maxRows => 10  #the max number of rows returned
-sort => 'ColumnA,ColumnB'      #sort order used for this query
-offset => 100  #the offset used when running the query
-columns => 'ColumnA,ColumnB'  #A comma-delimited list of column names to include in the results.
-containerFilterName => 'currentAndSubfolders'
-debug => 1,    #will result in a more verbose output
-loginAsGuest => #will not attempt to lookup credentials in netrc
-netrcFile => optional. the location of a file to use in place of a .netrc file.  see also the environment variable LABKEY_NETRC.
-requiredVersion => 9.1 #if 8.3 is selected, it will use LabKey's pre-9.1 format for returning the data.  9.1 is the default.  See documentation of LABKEY.Query.ExtendedSelectRowsResults for more detail here:
        https://www.labkey.org/download/clientapi_docs/javascript-api/symbols/LABKEY.Query.html
-useragent => an instance of LWP::UserAgent (if not provided, a new instance will be created)
-timeout => timeout in seconds (used when creating a new LWP::UserAgent)

NOTE

In version 1.0 and later of the perl API, the default result format is 9.1. This is different from the LabKey JS, which defaults to the earlier format for legacy purposes.

insertRows()

insertRows() can be used to insert records into a LabKey table

The following are the minimum required params:

my $insert = LabKey::Query::insertRows(
        -baseUrl => 'http://labkey.com:8080/labkey/',
        -containerPath => 'myFolder/',
        -schemaName => 'lists',
        -queryName => 'backup',
        -rows => [{
                "JobName" => 'jobName', 
                "Status" => $status, 
                "Log" => $log, 
                "Date" => $date
        }],
);
 

The following are optional:

-debug => 1,  #will result in a more verbose output 
-loginAsGuest => #will not attempt to lookup credentials in netrc
-netrcFile => optional. the location of a file to use in place of a .netrc file.  see also the environment variable LABKEY_NETRC.
-useragent => an instance of LWP::UserAgent (if not provided, a new instance will be created)
-timeout => timeout in seconds (used when creating a new LWP::UserAgent)

updateRows()

updateRows() can be used to update records in a LabKey table

The following are the minimum required params:

my $update = LabKey::Query::updateRows(
        -baseUrl => 'http://labkey.com:8080/labkey/',
        -containerPath => 'myFolder/',
        -schemaName => 'lists',
        -queryName => 'backup',
        -rows => [{
                "JobName" => 'jobName', 
                "Status" => $status, 
                "Log" => $log, 
                "Date" => $date
        }],
);
        

The following are optional:

-debug => 1,  #will result in a more verbose output
-loginAsGuest => #will not attempt to lookup credentials in netrc
-netrcFile => optional. the location of a file to use in place of a .netrc file.  see also the environment variable LABKEY_NETRC.
-useragent => an instance of LWP::UserAgent (if not provided, a new instance will be created)
-timeout => timeout in seconds (used when creating a new LWP::UserAgent)

deleteRows()

deleteRows() can be used to delete records in a LabKey table

The following are the minimum required params:

my $update = LabKey::Query::deleteRows(
        -baseUrl => 'http://labkey.com:8080/labkey/',
        -containerPath => 'myFolder/',
        -schemaName => 'lists',
        -queryName => 'backup',
        -rows => [{
                "Key" => '12', 
        }],
);
        

The following are optional:

-debug => 1,  #will result in a more verbose output
-loginAsGuest => #will not attempt to lookup credentials in netrc
-netrcFile => optional. the location of a file to use in place of a .netrc file.  see also the environment variable LABKEY_NETRC.
-useragent => an instance of LWP::UserAgent (if not provided, a new instance will be created)
-timeout => timeout in seconds (used when creating a new LWP::UserAgent)

executeSql()

executeSql() can be used to execute arbitrary SQL

The following are the minimum required params:

my $result = LabKey::Query::executeSql(
        -baseUrl => 'http://labkey.com:8080/labkey/',
        -containerPath => 'myFolder/',
        -schemaName => 'study',
        -sql => 'select MyDataset.foo, MyDataset.bar from MyDataset',
);
        

The following are optional:

-maxRows => 10  #the max number of rows returned
-sort => 'ColumnA,ColumnB'      #sort order used for this query
-offset => 100  #the offset used when running the query
-containerFilterName => 'currentAndSubfolders'
-debug => 1,  #will result in a more verbose output
-loginAsGuest => #will not attempt to lookup credentials in netrc
-netrcFile => optional. the location of a file to use in place of a .netrc file.  see also the environment variable LABKEY_NETRC.
-useragent => an instance of LWP::UserAgent (if not provided, a new instance will be created)
-timeout => timeout in seconds (used when creating a new LWP::UserAgent)

ENVIORNMENT VARIABLES

  • The 'LABKEY_URL' environment variable can be used instead of supplying a '-baseUrl' param.

  • The 'LABKEY_NETRC' environment variable can be used to specify an alternate location of a netrc file, if not in the user's home directory.

AUTHOR

LabKey [email protected]

CONTRIBUTING

Send comments, suggestions and bug reports to:

https://www.labkey.org/home/developer/forum/project-start.view

COPYRIGHT

Copyright (c) 2010 Ben Bimber Copyright (c) 2011-2018 LabKey Corporation

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

SEE ALSO

The LabKey client APIs are described in greater detail here: https://www.labkey.org/Documentation/wiki-page.view?name=viewAPIs

Support questions should be directed to the LabKey forum: https://www.labkey.org/home/Server/Forum/announcements-list.view

labkey-api-perl's People

Contributors

labkey-kevink avatar labkey-nicka avatar labkey-jeckels avatar labkey-klum avatar labkey-adam avatar cnathe avatar labkey-rond avatar labkey-tchad avatar

Watchers

Mohammad Sajid Anwar avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.