Files
nocobase/docs/build-all.sh
T
chenos 90a49032fa feat(db): add collection metadata architecture and multi-dialect support (#96)
* feat(db): simplify collection physical naming

* docs(db): document underscored naming

* feat(db): apply connection naming to queries

* feat(db): add Oracle database support

* feat(db): add Microsoft SQL Server support

* refactor(db): tighten metadata and schema ownership boundaries

* feat(db): add Collection Metadata V1 contract

* feat(db): define Collection Resolver contract

* feat(db): implement Collection Resolver

* feat(db): add revisioned Metadata document Store

* feat(db): add Collection Metadata Service

* feat(db): add Collection Registry and Connection APIs

* feat(db): add persistent Metadata document backends

* feat(db): integrate Builder with Metadata documents

* feat(db): invalidate Collections after transactions and migrations

* refactor(db): finalize Collection Metadata Store architecture

* docs(db): record Collection Metadata implementation status

* test(db): add managed Collection resolution scenarios

* test(db): cover external Module Metadata workflows

* test(db): cover Database Metadata Store integration

* feat(db): add executable Collection lifecycle examples

* chore(db): keep example databases in local tmp

* feat(db): retain example databases by default

* feat(db): add Hono commerce playground API

* feat(db): add playground web interface

* fix(db): initialize example temp directory in tests

* ci(db): test supported database matrix

* fix(db): scope collection discovery by table prefixes

* feat(db): add manager-bound migration runners

* feat(db): create related collections atomically

* feat(db): support targeted migration execution

* test(notification): verify resolved migration schemas

* feat(db): inspect physical schemas by logical name

* docs(db): clarify migrations seeds and collection renames

* docs(db): reorganize guides for agent workflows

* docs(db): normalize overview frontmatter

* fix(db): reject unsupported collection renames

* docs(db): classify internal proposals and archived guides

* docs(db): streamline core concepts for agents

* docs(db): finish historical documentation cleanup

* docs(db): add complete documentation map

* refactor(db): clarify public API boundaries

* refactor(db): align API docs and internal boundaries

* docs(db): reorganize builder and mutation design guides

* docs(db): finalize repository v1 proposal

* feat(db): define repository v1 contracts

* feat(db): add scalar repository runtime

* feat(db): add repository relation reads

* feat(db): add repository relation mutations

* fix(db): align repository database dialects

* docs(db): propose model-shaped repository mutations

* feat(db): accept model-shaped repository mutations

* feat(db): support strict filters for single mutations

* feat(db): add scoped relation target mutations

* docs(db): align form mutations with model-shaped values

* feat(db): finalize repository mutation inputs

* docs(db): add repository mutation examples

* docs(db): propose concise repository filters

* feat(db): support repository filter shorthand

* chore(db): sync repository public API baseline

* docs(db): document repository filter shorthand

* docs(db): define repository select and sort builders

* feat(db): add repository select builder

* feat(db): add repository sort builder

* docs(db): document repository select and sort builders

* docs(db): define repository capability roadmap

* feat(db): infer repository scalar selections

* feat(db): return selected records from deleteOne

* feat(db): add repository upsertOne

* feat(db): return selected records from bulk mutations

* feat(db): add repository aggregate queries

* feat(db): add repository group by queries

* feat(db): add repository distinct queries

* feat(db): add repository cursor pagination

* feat(db): paginate repository relation selections

* feat(db): stream repository records

* docs(db): mark repository roadmap complete

* feat(db): add atomic repository scalar updates

* feat(db): paginate repository cursors backward

* feat(db): add case-insensitive repository filters

* feat(db): add JSON repository filter predicates

* feat(db): combine batched relation selections and aggregates

* feat(db): support explicit junction mutation payloads

* fix(db): align direct JSON array membership across dialects

* docs(db): add agent-friendly repository usage guides

* fix(db): resolve record identities from explicit constraints

* refactor(db): require explicit relation keys and foreign key types

* test(db): cover explicit relation contracts and mutation rollback

* test(db): cover key types composite pagination and returning

* feat(db): support context in repository create operations

* feat(db): add variable expressions and callbacks to mutation values

* feat(db): resolve mutation variables across nested relations

* docs(db): organize repository guides by method and shared capability

* docs(db): record precise numeric value handling proposal

* docs(db): clarify repository method selection and identity boundaries

* docs(db): add query scenarios for repository regression coverage

* test(db): organize repository suites and map coverage gaps

* test(db): cover repository query contracts and mutation safety

* test(db): expand relation filter sort and batching coverage

* test(db): cover relation mutation cardinality isolation and limits

* fix(db): await repository stream cleanup before returning

* test(db): expand repository builders and isolate type contracts

* test(db): cover read-only non-null and relation transaction safety

* fix(db): validate repository select structures before execution

* test(db): cover select limits branch isolation and output types

* fix(db): reject malformed relation select result branches

* test(db): cover shared-target select graphs and local pagination

* test(db): cover cumulative nested combine validation budgets

* test(db): expand scalar filter operator and null coverage

* fix(db): reject malformed filter nodes and relation quantifiers

* test(db): cover filter relation scope and variable isolation

* fix(db): validate nested filter callbacks and variable paths

* fix(db): recognize float columns for repository numeric filters

* test(db): expand filter json patterns paths and type contracts

* test(db): cover filter context ownership and concurrent reuse

* fix(db): scope float alias inference to sqlite

* fix(db): recognize mysql float storage for numeric filters

* test(db): validate filter contracts across postgres and mysql

* test(db): cover values reuse and unused upsert branch validation

* fix(db): reject malformed repository sort inputs consistently

* test(db): cover root and relation pagination distinct boundaries

* test(db): cover null aggregates grouping scope and malformed selections

* test(db): install postgres streaming dependency for integration coverage

* test(db): complete parameter wiring validation and concurrent write coverage

* docs(db): reconcile repository parameter coverage and remaining contracts

* feat(db): introduce lazy dual-consumption repository queries

* feat(db): unify findMany iteration with relation and pagination semantics

* docs(db): document unified query consumption and verify late failures

* fix(db): preserve logical field types across database dialects

* fix(db): align repository reads and writes across five databases

* fix(db): preserve transaction failures during SQL Server inspection

* docs(db): record complete five-database acceptance results

* docs(db): finalize temporal field implementation baseline

* fix(db): distinguish temporal schema types and precision

* feat(db): persist declared field types and map temporal schemas

* feat(db): normalize repository temporal values across databases

* feat(db): expose physical scalar capabilities and preserve char semantics

* feat(db): enforce strict boolean repository codecs

* feat(db): support logical char collection fields

* feat(db): support strict string enum fields and metadata

* feat(api-client): add HTTP repository client

* refactor(db): prepare scalar decoders and reuse boolean codecs

* refactor(realtime): extract shared package

* refactor(app-client): integrate API and realtime services

* feat(app-server): add opt-in repository API routes

* docs(db): add enum, set, and JSON field type proposals

* feat(repository-example): add complete repository showcase

* feat(app-server): stream repository queries over HTTP

* feat(api-client): stream repository findMany queries

* test(repository-api): cover streamed client queries

* feat(repository-example): demonstrate streamed findMany

* feat(repository): expose aggregates and expand grouping examples

* docs(db): add relation example schema and fixtures

* fix(repository-example): align query AST input types

* feat(repository-example): add relation schema and seed data

* feat(repository-example): demonstrate relationship writes over HTTP

* feat(api-client): support builders for remote repository options

* feat(repository): add server-owned field and relation write policies

* test(db): normalize bigint foreign keys in write policy assertions

* fix(db): correct Oracle default inserts and optimize view inspection
2026-09-07 06:02:38 +08:00

86 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# 限制并发数的并行构建脚本
# 设置最大并发数(可根据 CPU 核心数调整)
MAX_JOBS=${MAX_JOBS:-4}
# 先校对 _meta.json 侧边栏链接:自动修 missingSlash / explicitIndex 等
# 可纠正项;如有真死链(unresolved)则在此处提前失败,避免后续 build 浪费时间。
echo "Normalizing _meta.json sidebar links..."
node scripts/normalize-doc-links.mjs --write
if [ $? -ne 0 ]; then
echo "✗ Sidebar link check failed (dead sidebar links remain)"
exit 1
fi
# 构建英文版本
echo "Building en (default)..."
pnpm build
# 收集所有需要构建的语言
langs=()
for dir in ./docs/*; do
if [ -d "$dir" ]; then
lang=$(basename "$dir")
if [ "$lang" != "en" ]; then
langs+=("$lang")
fi
fi
done
total=${#langs[@]}
echo "Total languages to build: $total"
echo "Max concurrent jobs: $MAX_JOBS"
# 使用 xargs 控制并发数
printf "%s\n" "${langs[@]}" | xargs -P $MAX_JOBS -I {} bash -c '
lang="{}"
echo "[$(date +%H:%M:%S)] Building $lang..."
if pnpm build --lang=$lang; then
echo "[$(date +%H:%M:%S)] ✓ $lang completed"
else
echo "[$(date +%H:%M:%S)] ✗ $lang failed"
exit 1
fi
'
if [ $? -eq 0 ]; then
echo "All builds completed successfully!"
else
echo "Some builds failed!"
exit 1
fi
# dist 生成 tgz 压缩包
echo ""
echo "Creating dist archive..."
DIST_DIR="./dist"
if [ ! -d "$DIST_DIR" ]; then
echo "Error: dist directory not found!"
exit 1
fi
ARCHIVE_NAME="dist.tar.gz"
echo "Compressing dist to $ARCHIVE_NAME..."
tar -czf "$ARCHIVE_NAME" -C "$DIST_DIR" .
if [ $? -eq 0 ]; then
# 获取文件大小
if [[ "$OSTYPE" == "darwin"* ]]; then
SIZE=$(stat -f%z "$ARCHIVE_NAME" | awk '{print int($1/1024/1024)}')
else
SIZE=$(stat -c%s "$ARCHIVE_NAME" | awk '{print int($1/1024/1024)}')
fi
echo ""
echo "✓ Archive created successfully!"
echo " File: $ARCHIVE_NAME"
echo " Size: ${SIZE}MB"
echo " Location: $(pwd)/$ARCHIVE_NAME"
else
echo "✗ Failed to create archive!"
exit 1
fi