The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
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. Documentation on .netrc can be found here:
    https://www.labkey.org/wiki/home/Documentation/page.view?name=netrc

    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.

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

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

AUTHOR
    Ben Bimber

COPYRIGHT
    Copyright (c) 2010 Ben Bimber

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

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.
            -containerFilter => 'currentAndSubfolders'
            -debug => 1,    #will result in a more verbose output
            -loginAsGuest => #will not attempt to lookup credentials in netrc

    NOTE: The environment variable 'LABKEY_URL' can be used instead of
    supplying a '-baseUrl' param

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

    NOTE: The environment variable 'LABKEY_URL' can be used instead of
    supplying a '-baseUrl' param

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

    NOTE: The environment variable 'LABKEY_URL' can be used instead of
    supplying a '-baseUrl' param

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

    NOTE: The environment variable 'LABKEY_URL' can be used instead of
    supplying a '-baseUrl' param

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
            -containerFilter => 'currentAndSubfolders'
            -debug => 1,  #will result in a more verbose output
            -loginAsGuest => #will not attempt to lookup credentials in netrc

    NOTE: The environment variable 'LABKEY_URL' can be used instead of
    supplying a '-baseUrl' param