Files
cloud-cap-samples/reviews/srv/reviews-service.cds
2021-10-18 18:04:33 +02:00

46 lines
1.3 KiB
Plaintext

using { sap.capire.reviews as my } from '../db/schema';
service ReviewsService {
// Sync API
entity Reviews as projection on my.Reviews excluding { likes }
action like (review: type of Reviews:ID);
action unlike (review: type of Reviews:ID);
// Async API
event reviewed : {
subject : type of Reviews:subject;
count : Integer;
rating : Decimal;
}
// Input validation
annotate Reviews with {
subject @mandatory;
title @mandatory;
rating @assert.range;
}
}
// Access control restrictions
annotate ReviewsService.Reviews with @restrict:[
{ grant:'READ', to:'any' }, // everybody can read reviews
{ grant:'CREATE', to:'authenticated-user' }, // users must login to add reviews
/////////////////////////////////////////////////
//
// Temporarily disabling this due to glitch in CAP Node.js runtime:
// { grant:'UPDATE', to:'authenticated-user', where:'reviewer=$user' },
// -> reenable it when the issue is fixed
{ grant:'UPDATE', to:'authenticated-user' },
//
////////////////////////////////////////////////////
{ grant:'DELETE', to:'admin' },
];
annotate ReviewsService with @restrict:[
{ grant:'like', to:'identified-user' },
{ grant:'unlike', to:'identified-user', where:'user=$user' },
];