@ cardstack/ hub (中文(简体) )
卡斯特克枢纽是卡斯特克项目的API服务器. 更多信息,请参见 整个项目。 。 。 .
建筑
枢纽由API端点和邮递数据库组成.
该应用程序使用基于 Postgresql 的背景任务队列 图表/工人
配置
以下列出枢纽接受的最常见环境变量列表:
SERVER_SECRET(需要) - 为您的机器生成一个,运行node --eval="console.log(crypto.randomBytes(32).toString('base64'))"FIXER_API_KEY(需为/api/exchange-rates) - 货币汇率的API键,我们使用 https://fixer.io/ 页面存档备份,存于互联网档案馆EXCHANGE_RATES_ALLOWED_DOMAINS- 请求的域/api/exchange-rates允许HUB_AWS_ACCESS_KEY_IDHUB_AWS_SECRET_ACCESS_KEYHUB_AWS_REGIONAWS_PROFILE- 如果没有HUB自动取款机* 变量被定义,不会将证书或区域传递给aws-sdk. 这将让 aws- sdk 的默认行为生效, 包括使用 AWS PROFILE env var 如果设置它DATABASE_URL- 开发中默认为postgres://postgres:postgres@localhost:5432/hub developmentLOG_LEVELS- 默认*=info
搜索单重播 process.env 并检查配置目录以查看引用的变量.
要使用变量,请创建名为的文件 .env ,并输入您想要使用的变量.
例如:
SERVER_SECRET=7TmgY1xFo/WrYTnAFSvAemZtFB8wQVMd8IkoeQKBboE=
AWS_PROFILE=cardstack
设置 Discord
这个单回波中的一些软件包支持一个不相通的bot的操作,它使用枢机的DI系统. 我们利用 科德杰斯语Name 我们的单位测试。 CordeJS使用不相容的bot在不相容下运行来测试bot的功能,方法是模仿不相容的用户,向被测试的bot发送命令. 为了运行cordejs测试,您需要设置一个不相容服务器,并安装拥有全部权限的cordebot以及cardbot进入不相容服务器.
设置接线人(和接线人)的指示在这里: https://cordejs.org/docs/createddiscordbot (中文(简体) )。在这些指令中,您需要设置 2 bots (指令概述了如何设置单个 bot) 。 一个你设置的机器人将是"纸牌",另一个你设置的机器人是"绳子"(用来测试纸牌).
在编写本报告时,纸牌机器人需要下列OAuth范围:

一旦布置出卡片机器人和接线机器人bots,您就可以配置环境变量来进行机器人测试。 具体而言:
CORDE_BOT_ID: 绳子机器人的机器人IDCORDE_BOT_TOKEN: 接线机器人的机器人标志CARDBOT_ID: 纸牌机器人的机器人IDCARDBOT_TOKEN: 纸牌机器人的机器人标志CARDBOT_ALLOWED_GUILDS:一个逗号分隔列表,列出允许卡片机器人在其中通信的不和服务器ID. 这应该是您添加的纸牌机器人的服务器 .CARDBOT_ALLOWED_CHANNELS:一个逗号分隔的频道ID列表,卡片机器人被允许进行通信.
(注:方便获得服务器和频道ID的启用) User Settings -> Advanced -> Enable Developer Mode 在迪斯科尔。 这将在服务器和频道的设置面板中显示一个"Copy ID"项目以获取这些ID. )
开始
你需要通过 yarn build,或者开始观看现场重建 yarn rebuild。 。 。 .
以下命令将在您本地运行的 postgres 服务器上创建中心开发数据库
createdb hub_development
yarn db:migrate up
dist/hub.js db seed
dist/hub.js db dump
NODE_ENV=test dist/hub.js db init
运行中枢
# Starts the server on port 3000
dist/hub.js server
# Starts the worker process
dist/hub.js worker
# Starts the discord bot
dist/hub.js bot
# If you want to run both in the same terminal you can run
yarn start
数据库迁移
# Run available migrations
yarn db:migrate up
#To reverse the last migration:
yarn db:migrate down
#To redo the last migration (i.e. down + up):
yarn db:migrate redo
## Creating database migrations
yarn db:migrate create <migration-name>`
关于如何创建移徙脚本的文件,可查阅https://salsita.github.io/node-pg-migrate/#/migrates
在您完成运行新的 DB 迁移脚本后, 在 config/structure.sql 使用 :
dist/hub.js db dump
应用程序控制台
要在其上下文中测试,调试和调用应用程序的孤立部分.
yarn console 启动应用程序控制台.
实例:
进行 DB 查询( 已安装的调用模块)
Hub > const { Client } = require('pg');
Hub > const config = require('config');
Hub > const client = new Client(config.db.url);
Hub > await client.connect();
Hub > await client.query('SELECT * FROM merchant_infos');
调用服务( 调用应用程序模块)
Hub > const workerClient = await container.lookup('worker-client');
Hub > await workerClient.addJob('persist-off-chain-merchant-info', { id: 1 });
在 AWS 上连接数据库中 {} 生产数据库
设置 AWS 会话管理器 ssh 配置
在您的 ~/.ssh/config 文件 :
# SSH over Session Manager
host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
查找隧道指令和数据库密码 :
cd [PROJECTS]/cardstack/infra/configs/hub/[staging|production]
AWS_PROFILE=cardstack terraform output | grep tunnel_to_database
AWS_PROFILE=cardstack terraform output | grep postgres_password
运行命令, 打开一个 postgres 客户端, 并连接到本地主机, 端口 55432 , 并使用用户名 Cardtack, 密码 .
提供 APIs
API 符合 JSON API 规格。 。 。 .
获取/api/汇率
获得/api/预付卡片
获取/api/预付卡-彩色方案
POST/API/预付卡-定制
POST / api/ 商家信息
获取/api/ merchant- infos/ validate- slug/: slug 获取/ api/ merchant- infos
" 中心 " 倡议
可在中心软件包内引用中心语言
dist/hub.js
QQ 提示: 添加 export PATH="./bin:$PATH" 给您的 .zshenv 或者说 .bash_profile 应援引 hub 直接(无 bin/(中文(简体) )
支持 CLI 的文件在 cli/ 目录。 你可以自己加一个 根据这些指示全数 yargs api 密码 此处可见。 。 。 .
卡片编译器
所有编译器功能目前都隐藏在COMPILER特性旗后. 所以用卡片编译和相关的路线开始服务器,使用那面旗.
COMPILER=true dist/hub.js server
捐款
注意此软件包是用 TypeScript 写的, 所以请确定运行类型Script 工作时编译器 . 见 整个项目 用于了解当地运行枢纽及其测试的信息.