Skip to content

Instantly share code, notes, and snippets.

View ableasdale's full-sized avatar

Alex Bleasdale ableasdale

View GitHub Profile
@ableasdale
ableasdale / rest-backup-status.xqy
Created August 23, 2017 13:42
MarkLogic: Getting the status of a backup using the ReST API
xquery version "1.0-ml";
declare variable $payload-status := '{"operation": "backup-status", "job-id" : "' || "8774639830166037592" || '","host-name": "' || xdmp:host-name() || '"}';
xdmp:http-post("http://localhost:8002/manage/v2/databases/Documents?format=json",
<options xmlns="xdmp:http">
<authentication method="digest">
<username>admin</username>
<password>admin</password>
</authentication>
@ableasdale
ableasdale / rest-backup.xqy
Created August 23, 2017 13:37
MarkLogic - ReST and XQuery: perform a database backup
xquery version "1.0-ml";
declare variable $payload-status := '{"operation": "backup-database", "forest": ["Documents"], "backup-dir": "/tmp" }';
xdmp:http-post("http://localhost:8002/manage/v2/databases/Documents?format=json",
<options xmlns="xdmp:http">
<authentication method="digest">
<username>admin</username>
<password>admin</password>
</authentication>
@ableasdale
ableasdale / db-rep.xqy
Created August 21, 2017 07:40
MarkLogic: Database Replication Trace Events
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
declare variable $config := admin:get-configuration();
let $config := admin:group-add-trace-event($config, admin:group-get-id($config, "Default"),
(
admin:group-trace-event("Forest SetMasterInfo"),
admin:group-trace-event("Forest Mount"),
@ableasdale
ableasdale / import-permissions.xqy
Created July 10, 2017 21:18
MarkLogic: Import permissions from Security Database
xquery version "1.0-ml";
declare variable $DATABASE-NAME as xs:string := "Security-Extra";
if (xdmp:database-name(xdmp:database()) eq $DATABASE-NAME )
then(
for $i in cts:uris()
let $perm := xdmp:eval('xquery version "1.0-ml";
declare variable $URI as xs:string external;
@ableasdale
ableasdale / copy-security-users-and-roles.xqy
Created July 7, 2017 18:57
MarkLogic: A technique for separating out user created users, privileges and roles from MarkLogic managed ones.
xquery version "1.0-ml";
declare function local:seq-contains($string as xs:string, $search-strings as xs:string+) as xs:boolean {
some $search-string in $search-strings satisfies ($string eq $search-string)
};
declare variable $SECURITY-DATABASE-NAME as xs:string := "Security-Extra";
declare variable $ML5-DEFAULT-SECURITY-URIS as xs:string+ := (
"http://marklogic.com/xdmp/amps/10036407012685036038",
@ableasdale
ableasdale / script-forest-creation.xqy
Created July 2, 2017 15:54
MarkLogic: Simple Forest Creation
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
declare variable $PATH as xs:string := "/tmp";
declare variable $NUMBER-OF-FORESTS as xs:integer := 4;
declare variable $FOREST-NAME as xs:string := "example-forest";
declare variable $CONFIG := admin:get-configuration();
for $i in 1 to $NUMBER-OF-FORESTS
@ableasdale
ableasdale / simple-user-role-creation.xqy
Created June 13, 2017 15:52
MarkLogic: Simple User and Role creation
xquery version "1.0-ml";
(:~
: Security Module for creating the Generic Database Users and roles
:
: @version 1.0
:)
import module namespace sec = "http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
@ableasdale
ableasdale / payload-with-gzip.xqy
Created May 23, 2017 20:28
MarkLogic: Example payload with GZip compression on the server
xquery version "1.0-ml";
declare function local:create-html-payload() {
xdmp:set-response-content-type("text/html"),
for $a in (1 to 100)
return element p {"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec hendrerit tempor tellus. Donec pretium posuere tellus. Proin quam nisl, tincidunt et, mattis eget, convallis nec, purus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla posuere. Donec vitae dolor. Nullam tristique diam non turpis. Cras placerat accumsan nulla. Nullam rutrum. Nam vestibulum accumsan nisl."}
};
if(fn:contains(xdmp:get-request-header("Accept-Encoding"), "gzip"))
then(
@ableasdale
ableasdale / payload-no-gzip.xqy
Created May 23, 2017 20:24
MarkLogic: Example payload creation (no GZip)
xquery version "1.0-ml";
declare function local:create-html-payload() {
xdmp:set-response-content-type("text/html"),
for $a in (1 to 100)
return element p {"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec hendrerit tempor tellus. Donec pretium posuere tellus. Proin quam nisl, tincidunt et, mattis eget, convallis nec, purus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla posuere. Donec vitae dolor. Nullam tristique diam non turpis. Cras placerat accumsan nulla. Nullam rutrum. Nam vestibulum accumsan nisl."}
};
local:create-html-payload()
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
declare variable $config := admin:get-configuration();
let $config := admin:group-add-trace-event($config, admin:group-get-id($config, "Default"),
(
admin:group-trace-event("SPARQL Describe Limit Off")
)