Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
21b9a29
fix: AMS documentation link in cap-users.md (#2367)
johannes-vogel Feb 10, 2026
2461b3f
tenant-specific deployment parameters (#2379)
ecklie Feb 11, 2026
5cf619b
fixed colors
danjoa Feb 11, 2026
d7645ec
added troubleshooting for 431 (#2373)
mariayord Feb 11, 2026
8917d9b
Hook for internal HANA TMS troubleshooting (#2377)
ecklie Feb 11, 2026
ced81f8
remove variants hint
renejeglinsky Feb 12, 2026
a1fb804
Merge branch 'main' of https://github.com/capire/docs
renejeglinsky Feb 12, 2026
b9dbd65
Tools/cds build: rework w/o toggling (#2391)
renejeglinsky Feb 12, 2026
5c38f2a
Fiori Guide: remove toggle (#2393)
renejeglinsky Feb 13, 2026
ff5cbd7
fix impl variants (#2371)
Akatuoro Feb 13, 2026
de58eb5
Use comma in CSV instead of semicolon in extensibility guide (#2387)
swaldmann Feb 13, 2026
92e9c15
Core concepts: fixed text (#2396)
martindecorte Feb 16, 2026
e0ba936
Update learn-more.md (#2385)
qmacro Feb 16, 2026
79bf0bc
Reintroduce interactive diagrams (#2388)
Akatuoro Feb 16, 2026
0ed9c7d
Fix formatting in bookshop.md for this.after (#2401)
Max-Meinel Feb 16, 2026
7aa637b
Simplify Outbound Authentication (#2400)
beckermarc Feb 17, 2026
8cfb8ed
Update links to examples in cds-test.md (#2405)
renejeglinsky Feb 17, 2026
1a75990
Fix typo in ReviewsService API reference (#2398)
narendran-nv Feb 17, 2026
99797a6
Fix yaml snippet
chgeo Feb 17, 2026
e0ee1b8
editing
renejeglinsky Feb 17, 2026
cc24303
MTXS hana deployment logs (#2390)
ecklie Feb 18, 2026
522ad21
Delete .nvmrc
chgeo Feb 18, 2026
ccd5590
Use latest Node version again
chgeo Feb 18, 2026
555f61e
chore: Update CLI texts (#2407)
github-actions[bot] Feb 18, 2026
3b38991
accessibility check
renejeglinsky Feb 19, 2026
7724d11
Merge branch 'main' of https://github.com/capire/docs
renejeglinsky Feb 19, 2026
8632f71
add protocol fragments (#2394)
SirSimon04 Feb 23, 2026
6e157b5
Fix link to bookstore/package.json in documentation (#2399)
narendran-nv Feb 23, 2026
2811926
[CDS/CXL] Edit CXL guide (#2363)
renejeglinsky Feb 24, 2026
269cf97
chore(deps): update dependency cspell to v9.7.0 (#2412)
renovate[bot] Feb 24, 2026
707a9e9
chore(deps): update dependency @mdit/plugin-dl to v0.23.0 (#2413)
renovate[bot] Feb 24, 2026
7324c8f
added redirect for db hana guide
renejeglinsky Feb 24, 2026
a7a1d1a
Live cql (#2403)
Akatuoro Feb 25, 2026
c4052e3
Added npm/mvn install to cloned repos
danjoa Feb 26, 2026
01a39f7
add redirects
renejeglinsky Feb 26, 2026
5dc479d
chore(deps): update shiki monorepo to v3.23.0 (#2414)
renovate[bot] Feb 26, 2026
75a6a6d
Less version changes from renovate, use variables
chgeo Feb 26, 2026
abd2372
chore(deps): update dependency com.sap.cloud.security.ams.client:cap-…
renovate[bot] Feb 26, 2026
7ae5a07
remove(lint): commented out section in tools/lint (#2418)
joergmann Feb 27, 2026
91cabdd
Adjust `cds version` output to current format
swaldmann Feb 27, 2026
1299005
fix deprecated version in hana limitation link (#2415)
kulliax Feb 27, 2026
7bcc9fe
feat(install): setup for Windows / Linux / WSL (#2392)
joergmann Mar 2, 2026
badc1cd
Fix typo in get-help.md (#2423)
qmacro Mar 2, 2026
01565ee
chore(deps): update eslint (#2397)
renovate[bot] Mar 2, 2026
94bd9f2
chore(deps): update dependency vite-plugin-cds to v0.1.10 (#2421)
renovate[bot] Mar 2, 2026
21c1042
chore(deps): update dependency markdownlint-cli to v0.48.0 (#2425)
renovate[bot] Mar 3, 2026
265e473
chore(deps): update dependency @mdit/plugin-dl to v0.23.1 (#2424)
renovate[bot] Mar 3, 2026
00597c0
Troubleshooting note on HANA root cert change (#2429)
chgeo Mar 3, 2026
86379b1
Removed external repository support (#2426)
rashmiangadi11 Mar 3, 2026
cc830a2
Fix toggles (#2428)
Akatuoro Mar 3, 2026
6af54cd
Remove feature parity hint in Postgres guide (#2430)
swaldmann Mar 3, 2026
2f0c20b
CAP Java: Migration Guide 4 to 5 (#2427)
StefanHenke Mar 3, 2026
aba4ed9
Enhance documentation on message persistence in drafts (#2416)
MattSchur Mar 3, 2026
affe284
chore: assign `public/` to technical code owners
chgeo Mar 4, 2026
2fac839
fix toggle animation (#2434)
Akatuoro Mar 4, 2026
4746a8d
chore(deps): update dependency com.sap.cds:cds4j-api to v4.8.0 (#2437)
renovate[bot] Mar 6, 2026
8ee5fd0
chore: Update CLI texts (#2432)
github-actions[bot] Mar 6, 2026
8f99e57
chore(deps): update dependency com.sap.cds:cds-services-api to v4.8.0…
renovate[bot] Mar 6, 2026
adbffd4
alesi documentation (#2352)
rjayasinghe Mar 9, 2026
eebca40
Add maven build profiles (#2411)
vl-leon Mar 9, 2026
5395e49
feat: Parallel Processing of Atomicity Groups in Node.js Apps (#2436)
sjvans Mar 9, 2026
2ff882d
add section for CAP Java OpenRewrite recipes (#2194)
rjayasinghe Mar 9, 2026
af7f5e0
show cqn when running cql queries (#2438)
Akatuoro Mar 10, 2026
96c0d04
chore(deps): update dependency @sap/cds to v9.8.1 (#2441)
renovate[bot] Mar 10, 2026
4401d4b
chore(deps): update eslint (#2440)
renovate[bot] Mar 10, 2026
5b06012
Alternate stable link
chgeo Mar 10, 2026
e1f941b
chore(deps): update dependency @cap-js/sqlite to v2.2.0 (#2442)
renovate[bot] Mar 10, 2026
c383e25
Document `cds up --overlay` (#2444)
swaldmann Mar 10, 2026
b714eda
Added documentation for hybrid testing with IAS (#2342)
mariayord Mar 11, 2026
4519600
chore(deps): update dependency @sap/cds to v9.8.2 (#2445)
renovate[bot] Mar 11, 2026
919ce34
chore(deps): update dependency sass to v1.98.0 (#2446)
renovate[bot] Mar 11, 2026
66b1245
chore: Update Java Properties (#2447)
github-actions[bot] Mar 11, 2026
f5b4a44
chore: Update CLI texts (#2448)
github-actions[bot] Mar 11, 2026
1e67bfa
Fuzzy Search: remove beta badge (#2402)
renejeglinsky Mar 11, 2026
0b683bc
fix menu title of Core Eventing in CAP (#2408)
sjvans Mar 12, 2026
b036a48
Stress that evens can be recurring
chgeo Mar 12, 2026
35ed485
Merge branch 'cap.cloud.sap' into main
renejeglinsky Mar 16, 2026
eef8d5d
Bump dependencies, ESLint 10
chgeo Mar 16, 2026
5279cb3
Add missing `globals` package`
chgeo Mar 16, 2026
e387188
Fix eslint findings
chgeo Mar 16, 2026
c749d3d
Go back to cds 9.7 for now
chgeo Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ java/ @smahati
# Infra
.github/ @chgeo @swaldmann
.vitepress/ @chgeo @swaldmann
public/ @chgeo @swaldmann

# allow dependencies updates through renovate w/o code owners
package.json
Expand Down
11 changes: 11 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,16 @@
"depNameTemplate": "com.sap.cds:cds4j-api",
"datasourceTemplate": "maven",
"versioningTemplate": "maven"
},
{
"customType": "regex",
"fileMatch": [ ".vitepress/config.*" ],
"matchStrings": [
"cloud_sec_ams\\s*:\\s*'(?<currentValue>.*?)'"
],
"depNameTemplate": "com.sap.cloud.security.ams.client:cap-ams-support",
"datasourceTemplate": "maven",
"versioningTemplate": "maven"
}

]}
1 change: 0 additions & 1 deletion .nvmrc

This file was deleted.

19 changes: 16 additions & 3 deletions .vitepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const base = process.env.GH_BASE || '/docs/'
// Construct vitepress config object...
import path from 'node:path'
import { defineConfig } from 'vitepress'
import playground from './lib/cds-playground/index.js'
import languages from './languages'
import { Menu } from './menu.js'

Expand Down Expand Up @@ -75,10 +76,17 @@ const config = defineConfig({
['link', { rel: 'icon', href: base+'favicon.ico' }],
['link', { rel: 'shortcut icon', href: base+'favicon.ico' }],
['link', { rel: 'apple-touch-icon', sizes: '180x180', href: base+'logos/cap.png' }],
['script', { src: base+'script.js' } ]
// Inline script to restore impl-variant selection immediately (before first paint)
['script', { id: 'check-impl-variant' }, `{const p=new URLSearchParams(location.search),v=p.get('impl-variant')||localStorage.getItem('impl-variant');if(v)document.documentElement.classList.add(v)}`]
],

vite: {
plugins: [...playground.plugins()],
esbuild: {
supported: {
'top-level-await': true //browsers can handle top-level-await features in special cases
},
},
build: {
chunkSizeWarningLimit: 6000, // chunk for local search index dominates
},
Expand Down Expand Up @@ -116,8 +124,9 @@ const siteURL = new URL(process.env.SITE_HOSTNAME || 'http://localhost:4173/docs
if (!siteURL.pathname.endsWith('/')) siteURL.pathname += '/'
config.themeConfig.capire = {
versions: {
java_services: '4.7.0',
java_cds4j: '4.7.0'
java_services: '4.8.0',
java_cds4j: '4.8.0',
cloud_sec_ams: '3.8.0'
},
gotoLinks: [],
siteURL
Expand Down Expand Up @@ -194,10 +203,14 @@ if (process.env.VITE_CAPIRE_EXTRA_ASSETS) {
import { dl } from '@mdit/plugin-dl'
import * as MdAttrsPropagate from './lib/md-attrs-propagate'
import * as MdTypedModels from './lib/md-typed-models'
import * as MdLiveCode from './lib/cds-playground/md-live-code'
import * as MdDiagramSvg from './lib/md-diagram-svg'

config.markdown.config = md => {
MdAttrsPropagate.install(md)
MdTypedModels.install(md)
MdLiveCode.install(md)
MdDiagramSvg.install(md)
md.use(dl)
}

Expand Down
2 changes: 1 addition & 1 deletion .vitepress/languages/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import scsv from './scsv.tmLanguage.json' with {type:'json'}

import type { LanguageInput } from 'shiki'
export default [
{ ...cds, aliases:['cds','dcl'] },
{ ...cds, aliases:['cds','dcl', 'cql'] },
{ ...csv, aliases:['csv','csvc'] },
{ ...scsv, aliases:['csvs'] },
{ ...log, aliases:['log','logs'] },
Expand Down
23 changes: 23 additions & 0 deletions .vitepress/lib/cds-playground/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import templates from './vite-plugin-templates'
import path from 'path'

let enabled = false
let plugins = () => []

try {
const { node, cap } = await import('vite-plugin-cds')
plugins = () => {
return [node(), cap(), templates([path.join(__dirname, 'templates')])]
}
enabled = true
}
catch {
// eslint-disable-next-line no-console
console.error('live code not available - run `npm i` to update your modules')
}

export {
enabled,
plugins,
}
export default { enabled, plugins }
73 changes: 73 additions & 0 deletions .vitepress/lib/cds-playground/md-live-code.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { MarkdownRenderer, MarkdownEnv } from 'vitepress'
import { dirname, join, relative } from 'path'
import { enabled } from '.'

/**
* Makes code blocks with "live" in the info string interactive by rendering a <LiveCode /> component.
*
* ```cds live
* select from Books { title }
* ```
*
* ```js live
* await INSERT.into('Books').entries(
* { ID: 2, author_ID: 150, title: 'Eldorado' }
* )
* ```
*
* Additional options:
* - as <lang>: specify the language to execute the code block as (defaults to the language specified before "live")
* example: ```cds live as cql
* - readonly: make the code block readonly
* example: ```cds live readonly
*/
export function install(md: MarkdownRenderer) {
if (!enabled) return
const fence = md.renderer.rules.fence
md.renderer.rules.fence = (tokens, idx, options, env: MarkdownEnv, ...args) => {

const { info } = tokens[idx]
const [language, live, ...rest] = info.split(' ')
if (live === 'live') {
const mdDir = dirname(env.realPath ?? env.path)
const filePath = './' + relative(mdDir, join(__dirname, '../../theme/components/cds-playground/LiveCode.vue'))
const imp = `import LiveCode from "${filePath}";`
insertScriptSetup(env, imp)

const opts = Object.fromEntries(['as'].map(key => {
const idx = rest.findIndex(k => k === key)
return idx > -1 ? [key, rest.splice(idx+1, 1)[0]] : [];
}))
const props = {
language: opts.as ?? language,
}
const flags = ['readonly'].filter(k => rest.includes(k))

const content = tokens[idx].content.trim()
return `<LiveCode initialQuery="${md.utils.escapeHtml(content)}" ${Object.entries(props).map(([k, v]) => `${k}="${v}"`)} ${flags.join(' ')}></LiveCode>`
}
return fence!(tokens, idx, options, env, ...args)
}
}

function insertScriptSetup(env: MarkdownEnv, imp: string) {
const sfcBlocks = env.sfcBlocks!
if (!sfcBlocks.scriptSetup) {
sfcBlocks.scriptSetup = {
content: '<script setup>\n</script>',
contentStripped: '\n',
tagClose: '</script>',
tagOpen: '<script setup>',
type: 'script'
}
sfcBlocks.scripts.push(sfcBlocks.scriptSetup)
}

const { scriptSetup } = sfcBlocks
const { tagOpen, tagClose, contentStripped: rest } = scriptSetup

if (!scriptSetup.content.includes(imp)) {
scriptSetup.contentStripped = `${imp}\n${rest}`
scriptSetup.content = `${tagOpen}${imp}\n${rest}${tagClose}`
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ID,name,dateOfBirth,placeOfBirth,dateOfDeath,placeOfDeath
101,Emily Brontë,1818-07-30,"Thornton, Yorkshire",1848-12-19,"Haworth, Yorkshire"
107,Charlotte Brontë,1818-04-21,"Thornton, Yorkshire",1855-03-31,"Haworth, Yorkshire"
150,Edgar Allen Poe,1809-01-19,"Boston, Massachusetts",1849-10-07,"Baltimore, Maryland"
170,Richard Carpenter,1929-08-14,"King’s Lynn, Norfolk",2012-02-26,"Hertfordshire, England"
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ID,title,descr,author_ID,stock,price,currency_code,genre_ID
201,Wuthering Heights,"Wuthering Heights, Emily Brontë's only novel, was published in 1847 under the pseudonym ""Ellis Bell"". It was written between October 1845 and June 1846. Wuthering Heights and Anne Brontë's Agnes Grey were accepted by publisher Thomas Newby before the success of their sister Charlotte's novel Jane Eyre. After Emily's death, Charlotte edited the manuscript of Wuthering Heights and arranged for the edited version to be published as a posthumous second edition in 1850.",101,12,11.11,GBP,11aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
207,Jane Eyre,"Jane Eyre /ɛər/ (originally published as Jane Eyre: An Autobiography) is a novel by English writer Charlotte Brontë, published under the pen name ""Currer Bell"", on 16 October 1847, by Smith, Elder & Co. of London. The first American edition was published the following year by Harper & Brothers of New York. Primarily a bildungsroman, Jane Eyre follows the experiences of its eponymous heroine, including her growth to adulthood and her love for Mr. Rochester, the brooding master of Thornfield Hall. The novel revolutionised prose fiction in that the focus on Jane's moral and spiritual development is told through an intimate, first-person narrative, where actions and events are coloured by a psychological intensity. The book contains elements of social criticism, with a strong sense of Christian morality at its core and is considered by many to be ahead of its time because of Jane's individualistic character and how the novel approaches the topics of class, sexuality, religion and feminism.",107,11,12.34,GBP,11aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
251,The Raven,"""The Raven"" is a narrative poem by American writer Edgar Allan Poe. First published in January 1845, the poem is often noted for its musicality, stylized language, and supernatural atmosphere. It tells of a talking raven's mysterious visit to a distraught lover, tracing the man's slow fall into madness. The lover, often identified as being a student, is lamenting the loss of his love, Lenore. Sitting on a bust of Pallas, the raven seems to further distress the protagonist with its constant repetition of the word ""Nevermore"". The poem makes use of folk, mythological, religious, and classical references.",150,333,13.13,USD,16aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
252,Eleonora,"""Eleonora"" is a short story by Edgar Allan Poe, first published in 1842 in Philadelphia in the literary annual The Gift. It is often regarded as somewhat autobiographical and has a relatively ""happy"" ending.",150,555,14,USD,15aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
271,Catweazle,"Catweazle is a British fantasy television series, starring Geoffrey Bayldon in the title role, and created by Richard Carpenter for London Weekend Television. The first series, produced and directed by Quentin Lawrence, was screened in the UK on ITV in 1970. The second series, directed by David Reid and David Lane, was shown in 1971. Each series had thirteen episodes, most but not all written by Carpenter, who also published two books based on the scripts.",170,22,150,JPY,13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ID_texts,ID,locale,title,descr
d2a65a27-9f2a-480f-bc38-84ee8ec5c13e,201,de,Sturmhöhe,"Sturmhöhe (Originaltitel: Wuthering Heights) ist der einzige Roman der englischen Schriftstellerin Emily Brontë (1818–1848). Der 1847 unter dem Pseudonym Ellis Bell veröffentlichte Roman wurde vom viktorianischen Publikum weitgehend abgelehnt, heute gilt er als ein Klassiker der britischen Romanliteratur des 19. Jahrhunderts."
8c42c706-a979-41cf-9ffe-91e6cf1383a0,201,fr,Les Hauts de Hurlevent,"Les Hauts de Hurlevent (titre original : Wuthering Heights), parfois orthographié Les Hauts de Hurle-Vent, est l'unique roman d'Emily Brontë, publié pour la première fois en 1847 sous le pseudonyme d’Ellis Bell. Loin d'être un récit moralisateur, Emily Brontë achève néanmoins le roman dans une atmosphère sereine, suggérant le triomphe de la paix et du Bien sur la vengeance et le Mal."
9e1c4c81-dc90-4600-85b1-e9dd4bf12ce0,207,de,Jane Eyre,"Jane Eyre. Eine Autobiographie (Originaltitel: Jane Eyre. An Autobiography), erstmals erschienen im Jahr 1847 unter dem Pseudonym Currer Bell, ist der erste veröffentlichte Roman der britischen Autorin Charlotte Brontë und ein Klassiker der viktorianischen Romanliteratur des 19. Jahrhunderts. Der Roman erzählt in Form einer Ich-Erzählung die Lebensgeschichte von Jane Eyre (ausgesprochen /ˌdʒeɪn ˈɛə/), die nach einer schweren Kindheit eine Stelle als Gouvernante annimmt und sich in ihren Arbeitgeber verliebt, jedoch immer wieder um ihre Freiheit und Selbstbestimmung kämpfen muss. Als klein, dünn, blass, stets schlicht dunkel gekleidet und mit strengem Mittelscheitel beschrieben, gilt die Heldin des Romans Jane Eyre nicht zuletzt aufgrund der Kino- und Fernsehversionen der melodramatischen Romanvorlage als die bekannteste englische Gouvernante der Literaturgeschichte"
9be0524b-4cb9-4fc1-9dc2-d65b1c13cf53,252,de,Eleonora,"“Eleonora” ist eine Erzählung von Edgar Allan Poe. Sie wurde 1841 erstveröffentlicht. In ihr geht es um das Paradox der Treue in der Treulosigkeit."
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
ID,parent_ID,name
10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,,Fiction
11aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Drama
12aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Poetry
13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Fantasy
131aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Fairy Tale
132aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Epic Fantasy
133aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,High Fantasy
134aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,13aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Gothic
14aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Science Fiction
141aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,14aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Utopian and Dystopian
1411aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,141aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Utopian
1412aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,141aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Dystopian
14121aaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,1412aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Cyberpunk
141211aa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,14121aaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Steampunk
142aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,14aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Space Opera
143aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,14aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Time Travel
144aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,14aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Tech Noir
15aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Romance
151aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,15aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Contemporary Romance
152aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,15aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Historical Romance
153aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,15aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Romantic Suspense
16aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Mystery
161aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,16aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Crime
1611aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,161aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Thriller
16111aaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,1611aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Police Procedural
16112aaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,1611aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Legal Thriller
16113aaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,1611aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Medical Thriller
16114aaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,1611aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Spy Thriller
1612aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,161aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Detective
1613aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,161aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Suspense
162aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,16aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Noir
1621aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,162aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Nordic Noir
1622aaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,162aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Tart Noir
163aaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,16aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Cozy Mystery
17aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Adventure
18aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Short Story
19aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,10aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Graphic Novel
20aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,,Non-Fiction
21aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,20aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Biography
22aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,21aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Autobiography
23aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,20aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Essay
24aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,20aaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa,Speech
42 changes: 42 additions & 0 deletions .vitepress/lib/cds-playground/templates/bookshop/db/schema.cds
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using { Currency, cuid, managed, sap } from '@sap/cds/common';
namespace sap.capire.bookshop;

entity Books {
key ID : Integer;
author : Association to Authors @mandatory;
title : localized String @mandatory;
descr : localized String(2000);
genre : Association to Genres;
stock : Integer;
price : Price;
currency : Currency;

total = price * stock;
}

entity Authors {
key ID : Integer;
name : String @mandatory;
dateOfBirth : Date;
dateOfDeath : Date;
placeOfBirth : String;
placeOfDeath : String;
books : Association to many Books on books.author = $self;

cheapBooks = books[price < 19.99]; // based on `books` association
age = years_between(dateOfBirth, coalesce(dateOfDeath, date( $now )));
}

/** Hierarchically organized Code List for Genres */
entity Genres : cuid, sap.common.CodeList {
parent : Association to Genres;
children : Composition of many Genres on children.parent = $self;
}

type Price : Decimal(9,2);

// --------------------------------------------------------------------------------
// Temporary workaround for this situation:
// - Fiori apps in bookstore annotate Books with @fiori.draft.enabled.
// - Because of that .csv data has to eagerly fill in ID_texts column.
annotate Books with @fiori.draft.enabled;
3 changes: 3 additions & 0 deletions .vitepress/lib/cds-playground/templates/bookshop/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# capire/bookshop

A copy of the [capire/bookshop](https://github.com/capire/bookshop) model.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
using { sap.capire.bookshop as my } from '../db/schema';

service AdminService @(odata:'/admin') {
entity Authors as projection on my.Authors;
entity Books as projection on my.Books;
entity Genres as projection on my.Genres;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using { sap.capire.bookshop as my } from '../db/schema';

service CatalogService @(odata:'/browse') {

/** For displaying lists of Books */
@readonly entity ListOfBooks as projection on Books {
*, currency.symbol as currency,
}
excluding { descr };

/** For display in details pages */
@readonly entity Books as projection on my.Books {
*, // all fields with the following denormalizations:
author.name as author,
genre.name as genre,
} excluding { createdBy, modifiedBy };

@requires: 'authenticated-user'
action submitOrder ( book: Books:ID, quantity: Integer );
}
Loading
Loading