Skip to content

Instantly share code, notes, and snippets.

@dscape
Created September 14, 2011 12:32
Show Gist options
  • Save dscape/1216438 to your computer and use it in GitHub Desktop.
Save dscape/1216438 to your computer and use it in GitHub Desktop.
(:: Configure script for the top-songs application ::)
(: forest :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $config := admin:forest-create(
$config,
"top-songs-01",
xdmp:host(),
())
return admin:save-configuration($config);
(: database :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $config := admin:database-create(
$config,
"top-songs",
xdmp:database("Security"),
xdmp:database("Schemas"))
return admin:save-configuration($config);
(: attach forest to database :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $config := admin:database-attach-forest(
$config,
xdmp:database("top-songs"),
xdmp:forest("top-songs-01"))
return admin:save-configuration($config);
(: HTTP application server :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $groupid := admin:group-get-id($config, "Default")
let $server := admin:http-server-create(
$config,
$groupid,
"8040-top-songs-HTTP",
"/application/",
8040,
admin:database-get-id($config, "top-songs-modules"),
admin:database-get-id($config, "top-songs"))
return admin:save-configuration($server);
(: WebDAV application server :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $groupid := admin:group-get-id($config, "Default")
let $server := admin:webdav-server-create(
$config,
$groupid,
"8041-top-songs-WebDAV",
"/",
8041,
admin:database-get-id($config, "top-songs-modules"))
return admin:save-configuration($server);
(: XDBC application server :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $groupid := admin:group-get-id($config, "Default")
let $server := admin:xdbc-server-create(
$config,
$groupid,
"8042-top-songs-XDBC",
"/",
8042,
0,
admin:database-get-id($config, "top-songs"))
return admin:save-configuration($server);
(: URI Lexicon :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $uri-lex := admin:database-set-uri-lexicon($config, xdmp:database("top-songs"), fn:true())
return admin:save-configuration($uri-lex);
(: Collection Lexicon :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $collection-lex := admin:database-set-collection-lexicon($config, xdmp:database("top-songs"), fn:true())
return admin:save-configuration($collection-lex);
(: Element Range Indexes :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $rangespec := (
admin:database-range-element-index(
"date",
"http://marklogic.com/MLU/top-songs",
"week",
"",
fn:false()
),
admin:database-range-element-index(
"string",
"http://marklogic.com/MLU/top-songs",
"genre",
"http://marklogic.com/collation/",
fn:false()
),
admin:database-range-element-index(
"string",
"http://marklogic.com/MLU/top-songs",
"genre",
"http://marklogic.com/collation/en/S1/AS/T00BB",
fn:false()
),
admin:database-range-element-index(
"string",
"http://marklogic.com/MLU/top-songs",
"artist",
"http://marklogic.com/collation/en/S1/AS/T00BB",
fn:false()
),
admin:database-range-element-index(
"string",
"http://marklogic.com/MLU/top-songs",
"title",
"http://marklogic.com/collation/en/S1/AS/T00BB",
fn:false()
)
)
let $indexes := admin:database-add-range-element-index(
$config,
admin:database-get-id($config, "top-songs"),
$rangespec)
return admin:save-configuration($indexes);
(: Attribute Range Indexes :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $rangespec := (
admin:database-range-element-attribute-index(
"date",
"http://marklogic.com/MLU/top-songs",
"weeks",
"",
"last",
"",
fn:false()
)
)
let $indexes := admin:database-add-range-element-attribute-index(
$config,
admin:database-get-id($config, "top-songs"),
$rangespec)
return admin:save-configuration($indexes);
(: Word Query - Included Elements :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $wqspec := (
admin:database-included-element(
"http://marklogic.com/MLU/top-songs",
"artist",
4.0,
"",
"",
""
),
admin:database-included-element(
"http://marklogic.com/MLU/top-songs",
"title",
4.0,
"",
"",
""
),
admin:database-included-element(
"http://marklogic.com/MLU/top-songs",
"descr",
0.75,
"",
"",
""
)
)
let $wq := admin:database-add-word-query-included-element(
$config,
admin:database-get-id($config, "top-songs"),
$wqspec
)
return admin:save-configuration($wq);
(: Word Query - Excluded Elements :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $wqspec := (
admin:database-excluded-element(
"http://marklogic.com/MLU/top-songs",
"format"
),
admin:database-excluded-element(
"http://marklogic.com/MLU/top-songs",
"length"
)
)
let $wq := admin:database-add-word-query-excluded-element(
$config,
admin:database-get-id($config, "top-songs"),
$wqspec
)
return admin:save-configuration($wq);
(: Field :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $dbid := xdmp:database("top-songs")
let $fieldspec := admin:database-field("creator", fn:false() )
let $field := admin:database-add-field($config, $dbid, $fieldspec)
return admin:save-configuration($field);
(: Field - Included Elements :)
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $dbid := xdmp:database("top-songs")
let $fieldspec := admin:database-included-element("http://marklogic.com/MLU/top-songs", "artist", 1.0, "", "", "")
let $field-include := admin:database-add-field-included-element($config, $dbid, "creator", $fieldspec)
return admin:save-configuration($field-include);
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $dbid := xdmp:database("top-songs")
let $fieldspec := admin:database-included-element("http://marklogic.com/MLU/top-songs", "writer", 1.0, "", "", "")
let $field-include := admin:database-add-field-included-element($config, $dbid, "creator", $fieldspec)
return admin:save-configuration($field-include);
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $dbid := xdmp:database("top-songs")
let $fieldspec := admin:database-included-element("http://marklogic.com/MLU/top-songs", "producer", 1.0, "", "", "")
let $field-include := admin:database-add-field-included-element($config, $dbid, "creator", $fieldspec)
return admin:save-configuration($field-include);
(: Finished :)
xquery version "1.0-ml";
"All Done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment