文章目录
一、开发环境
1、Nodejs
安装Nodejs,版本16+。
2、cds
在命令行中执行以下命令,安装cds开发工具。
npm i -g @sap/cds-dk
执行命令cds -v
查看安装情况。
3、VScode
安装VSCODE。
4、VScode扩展程序
查找SAP CDS Language Support
,安装。
5、cf
下载cf安装包并安装。
6、mbt
npm i -g mbt
二、创建项目
1、创建项目
命令行执行命令,cds init cap-demo
。
2、安装依赖
在cap-demo目录下,执行npm i
。
3、运行
执行cds watch
运行项目。
三、添加逻辑
1、定义model
在db
目录下创建model.cds
文件,并添加以下代码,定义三个实体。
namespace my.demo;
using {managed} from '@sap/cds/common';
entity Employees {
key ID : Integer;
name : localized String;
depart : Association to Departs;
tasks : Integer;
}
entity Departs {
key ID : Integer;
name : String;
employees : Association to many Employees
on employees.depart = $self;
}
entity Orders : managed {
key ID : UUID;
description : String;
employee : Association to Employees;
}
2、定义service
在srv
目录下创建service.cds
,添加以下代码,暴露服务接口。
using my.demo as my from '../db/model';
service DemoService {
entity Employees as projection on my.Employees;
entity Departs as projection on my.Departs;
entity Orders as projection on my.Orders;
}
3、预览
代码添加以后,cds
会自动刷新服务,接口已经在本地运行。
浏览器访问http://localhost:4004
。
四、持久化
1、配置sqlite3
在package.json
中,添加cds
节点。
"cds": {
"requires": {
"db": {
"kind": "sqlite",
"credentials": { "url": "db/demo.sqlite" }
}
}
}
2、发布数据库
根目录下执行命令,发布demo数据库。
cds deploy
3、查看数据库
根目录下执行命令,查看demo数据库。
sqlite3 db/my-bookshop.db -cmd .dump
4、添加数据
根据model结构,是用Postman等工具添加数据。
五、添加逻辑
在srv目录下创建service.js文件,添加以下代码。
module.exports = (srv) => {
const {Employees} = cds.entities ('my.demo');
srv.before('CREATE', 'Orders', async (req) => {
const order = req.data
const tx = cds.transaction(req);
const employee = await tx.run(SELECT.one.from(Employees).where({ID: order.employee_ID}));
if(!employee) {
return req.error (404, "Employee does not exist!");
}
if(employee.tasks > 2) {
return req.error (404, "Employee is busy!");
}
await tx.run (
UPDATE (Employees)
.set ({ tasks: {'+=': 1}})
.where ({ ID: order.employee_ID})
);
return req.info(200, "success");
});
}
创建工单,并分配给指定员工,当员工未找到或者员工当前人物超过2个时报错。