@downcity/city 0.2.17 → 0.2.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +33 -16
  2. package/bin/city/admin/index.d.ts +36 -0
  3. package/bin/city/admin/index.d.ts.map +1 -0
  4. package/bin/city/admin/index.js +85 -0
  5. package/bin/city/admin/index.js.map +1 -0
  6. package/bin/city/admin/types.d.ts +41 -0
  7. package/bin/city/admin/types.d.ts.map +1 -0
  8. package/bin/city/admin/types.js +5 -0
  9. package/bin/city/admin/types.js.map +1 -0
  10. package/bin/city/city.d.ts +73 -0
  11. package/bin/city/city.d.ts.map +1 -0
  12. package/bin/city/city.js +116 -0
  13. package/bin/city/city.js.map +1 -0
  14. package/bin/city/http.d.ts +55 -0
  15. package/bin/city/http.d.ts.map +1 -0
  16. package/bin/city/http.js +78 -0
  17. package/bin/city/http.js.map +1 -0
  18. package/bin/city/index.d.ts +20 -0
  19. package/bin/city/index.d.ts.map +1 -0
  20. package/bin/city/index.js +14 -0
  21. package/bin/city/index.js.map +1 -0
  22. package/bin/city/invoker/ai/index.d.ts +126 -0
  23. package/bin/city/invoker/ai/index.d.ts.map +1 -0
  24. package/bin/city/invoker/ai/index.js +247 -0
  25. package/bin/city/invoker/ai/index.js.map +1 -0
  26. package/bin/city/invoker/ai/stream.d.ts +8 -0
  27. package/bin/city/invoker/ai/stream.d.ts.map +1 -0
  28. package/bin/city/invoker/ai/stream.js +17 -0
  29. package/bin/city/invoker/ai/stream.js.map +1 -0
  30. package/bin/city/invoker/ai/types.d.ts +14 -0
  31. package/bin/city/invoker/ai/types.d.ts.map +1 -0
  32. package/bin/city/invoker/ai/types.js +9 -0
  33. package/bin/city/invoker/ai/types.js.map +1 -0
  34. package/bin/city/invoker/balance/index.d.ts +76 -0
  35. package/bin/city/invoker/balance/index.d.ts.map +1 -0
  36. package/bin/city/invoker/balance/index.js +137 -0
  37. package/bin/city/invoker/balance/index.js.map +1 -0
  38. package/bin/city/invoker/balance/types.d.ts +324 -0
  39. package/bin/city/invoker/balance/types.d.ts.map +1 -0
  40. package/bin/city/invoker/balance/types.js +9 -0
  41. package/bin/city/invoker/balance/types.js.map +1 -0
  42. package/bin/city/invoker/env/index.d.ts +33 -0
  43. package/bin/city/invoker/env/index.d.ts.map +1 -0
  44. package/bin/city/invoker/env/index.js +53 -0
  45. package/bin/city/invoker/env/index.js.map +1 -0
  46. package/bin/city/invoker/env/types.d.ts +57 -0
  47. package/bin/city/invoker/env/types.d.ts.map +1 -0
  48. package/bin/city/invoker/env/types.js +5 -0
  49. package/bin/city/invoker/env/types.js.map +1 -0
  50. package/bin/city/invoker/invoker.d.ts +44 -0
  51. package/bin/city/invoker/invoker.d.ts.map +1 -0
  52. package/bin/city/invoker/invoker.js +87 -0
  53. package/bin/city/invoker/invoker.js.map +1 -0
  54. package/bin/city/invoker/payment/index.d.ts +69 -0
  55. package/bin/city/invoker/payment/index.d.ts.map +1 -0
  56. package/bin/city/invoker/payment/index.js +110 -0
  57. package/bin/city/invoker/payment/index.js.map +1 -0
  58. package/bin/city/invoker/payment/types.d.ts +66 -0
  59. package/bin/city/invoker/payment/types.d.ts.map +1 -0
  60. package/bin/city/invoker/payment/types.js +10 -0
  61. package/bin/city/invoker/payment/types.js.map +1 -0
  62. package/bin/city/invoker/towns/index.d.ts +46 -0
  63. package/bin/city/invoker/towns/index.d.ts.map +1 -0
  64. package/bin/city/invoker/towns/index.js +73 -0
  65. package/bin/city/invoker/towns/index.js.map +1 -0
  66. package/bin/city/invoker/towns/types.d.ts +46 -0
  67. package/bin/city/invoker/towns/types.d.ts.map +1 -0
  68. package/bin/city/invoker/towns/types.js +5 -0
  69. package/bin/city/invoker/towns/types.js.map +1 -0
  70. package/bin/city/types/city.d.ts +71 -0
  71. package/bin/city/types/city.d.ts.map +1 -0
  72. package/bin/city/types/city.js +8 -0
  73. package/bin/city/types/city.js.map +1 -0
  74. package/bin/city/user/index.d.ts +27 -0
  75. package/bin/city/user/index.d.ts.map +1 -0
  76. package/bin/city/user/index.js +100 -0
  77. package/bin/city/user/index.js.map +1 -0
  78. package/bin/city/user/types.d.ts +49 -0
  79. package/bin/city/user/types.d.ts.map +1 -0
  80. package/bin/city/user/types.js +5 -0
  81. package/bin/city/user/types.js.map +1 -0
  82. package/bin/core/auth/authenticator.d.ts +6 -6
  83. package/bin/core/auth/authenticator.d.ts.map +1 -1
  84. package/bin/core/auth/authenticator.js +11 -11
  85. package/bin/core/auth/authenticator.js.map +1 -1
  86. package/bin/core/auth/token-signer.js +4 -4
  87. package/bin/core/auth/token-signer.js.map +1 -1
  88. package/bin/core/auth/types.d.ts +7 -7
  89. package/bin/core/auth/types.d.ts.map +1 -1
  90. package/bin/core/base/base-init.d.ts +5 -5
  91. package/bin/core/base/base-init.d.ts.map +1 -1
  92. package/bin/core/base/base-init.js +8 -8
  93. package/bin/core/base/base-init.js.map +1 -1
  94. package/bin/core/base/base-instruction.js +1 -1
  95. package/bin/core/base/base-instruction.js.map +1 -1
  96. package/bin/core/base/base-router.d.ts +2 -2
  97. package/bin/core/base/base-router.d.ts.map +1 -1
  98. package/bin/core/base/base-router.js +15 -15
  99. package/bin/core/base/base-router.js.map +1 -1
  100. package/bin/core/base/base-runtime.d.ts +3 -3
  101. package/bin/core/base/base-runtime.d.ts.map +1 -1
  102. package/bin/core/base/base-runtime.js +4 -4
  103. package/bin/core/base/base-runtime.js.map +1 -1
  104. package/bin/core/base/base.d.ts +8 -8
  105. package/bin/core/base/base.d.ts.map +1 -1
  106. package/bin/core/base/base.js +10 -10
  107. package/bin/core/base/base.js.map +1 -1
  108. package/bin/core/runtime.d.ts +4 -4
  109. package/bin/core/runtime.d.ts.map +1 -1
  110. package/bin/core/runtime.js +1 -1
  111. package/bin/core/types.d.ts +3 -3
  112. package/bin/core/types.d.ts.map +1 -1
  113. package/bin/index.d.ts +25 -5
  114. package/bin/index.d.ts.map +1 -1
  115. package/bin/index.js +18 -7
  116. package/bin/index.js.map +1 -1
  117. package/bin/service/ai/openai-compatible-provider.d.ts +1 -1
  118. package/bin/service/ai/openai-compatible-provider.js +2 -2
  119. package/bin/service/ai/openai-compatible-provider.js.map +1 -1
  120. package/bin/service/ai/provider.d.ts +1 -1
  121. package/bin/service/ai/provider.js +1 -1
  122. package/bin/service/ai/types.d.ts +1 -1
  123. package/bin/service/installable-service.d.ts +3 -3
  124. package/bin/service/installable-service.d.ts.map +1 -1
  125. package/bin/service/installable-service.js +1 -1
  126. package/bin/service/installable-service.js.map +1 -1
  127. package/bin/service/instruction.js +7 -7
  128. package/bin/service/instruction.js.map +1 -1
  129. package/bin/service/service.d.ts +5 -5
  130. package/bin/service/service.d.ts.map +1 -1
  131. package/bin/service/service.js +1 -1
  132. package/bin/service/service.js.map +1 -1
  133. package/bin/service/{studios → towns}/schema.d.ts +23 -23
  134. package/bin/service/towns/schema.d.ts.map +1 -0
  135. package/bin/service/towns/schema.js +60 -0
  136. package/bin/service/towns/schema.js.map +1 -0
  137. package/bin/service/towns/town-store.d.ts +17 -0
  138. package/bin/service/towns/town-store.d.ts.map +1 -0
  139. package/bin/service/towns/town-store.js +49 -0
  140. package/bin/service/towns/town-store.js.map +1 -0
  141. package/bin/service/towns/towns-service.d.ts +15 -0
  142. package/bin/service/towns/towns-service.d.ts.map +1 -0
  143. package/bin/service/towns/towns-service.js +54 -0
  144. package/bin/service/towns/towns-service.js.map +1 -0
  145. package/bin/service/towns/types.d.ts +51 -0
  146. package/bin/service/towns/types.d.ts.map +1 -0
  147. package/bin/service/towns/types.js +7 -0
  148. package/bin/service/towns/types.js.map +1 -0
  149. package/package.json +9 -8
  150. package/bin/service/studios/schema.d.ts.map +0 -1
  151. package/bin/service/studios/schema.js +0 -60
  152. package/bin/service/studios/schema.js.map +0 -1
  153. package/bin/service/studios/studio-store.d.ts +0 -17
  154. package/bin/service/studios/studio-store.d.ts.map +0 -1
  155. package/bin/service/studios/studio-store.js +0 -49
  156. package/bin/service/studios/studio-store.js.map +0 -1
  157. package/bin/service/studios/studios-service.d.ts +0 -15
  158. package/bin/service/studios/studios-service.d.ts.map +0 -1
  159. package/bin/service/studios/studios-service.js +0 -51
  160. package/bin/service/studios/studios-service.js.map +0 -1
  161. package/bin/service/studios/types.d.ts +0 -51
  162. package/bin/service/studios/types.d.ts.map +0 -1
  163. package/bin/service/studios/types.js +0 -7
  164. package/bin/service/studios/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compatible-provider.js","sourceRoot":"","sources":["../../../src/service/ai/openai-compatible-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-compatible-provider.js","sourceRoot":"","sources":["../../../src/service/ai/openai-compatible-provider.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * 通过 model() 方法生成模型配置,可直接传给 AIService.use() 完成注册。
6
6
  *
7
7
  * 两条独立通路:
8
- * - SDK 通路:text / stream — 给 UserClient
8
+ * - SDK 通路:text / stream — 给 User City
9
9
  * - OpenAI 兼容通路:openai — 给 /chat/completions 端点用
10
10
  * - 未提供 openai action → AIService 自动透传(需 baseURL + envKey)
11
11
  * - 提供了 openai action → 按自定义逻辑处理
@@ -5,7 +5,7 @@
5
5
  * 通过 model() 方法生成模型配置,可直接传给 AIService.use() 完成注册。
6
6
  *
7
7
  * 两条独立通路:
8
- * - SDK 通路:text / stream — 给 UserClient
8
+ * - SDK 通路:text / stream — 给 User City
9
9
  * - OpenAI 兼容通路:openai — 给 /chat/completions 端点用
10
10
  * - 未提供 openai action → AIService 自动透传(需 baseURL + envKey)
11
11
  * - 提供了 openai action → 按自定义逻辑处理
@@ -8,7 +8,7 @@ import type { ActionFn } from "../action.js";
8
8
  * 模型 action 映射,key 为通路名称。
9
9
  *
10
10
  * 两条独立通路:
11
- * - SDK 通路:text / stream / image / video / tts / asr — 给 UserClient
11
+ * - SDK 通路:text / stream / image / video / tts / asr — 给 User City
12
12
  * - OpenAI 兼容通路:openai — 给 /chat/completions 端点用
13
13
  *
14
14
  * 每个 action 接收 Context,返回对应通路的结果。
@@ -28,9 +28,9 @@ export interface ServiceInstallContext {
28
28
  export interface ServiceRouteContext {
29
29
  /** 当前 user_token 解析出的用户;免登录或 admin 请求时可能为空 */
30
30
  user?: RuntimeUser;
31
- /** 当前 user_token 对应的 studio;免登录或 admin 请求时可能为空 */
32
- studio?: {
33
- studio_id: string;
31
+ /** 当前 user_token 对应的 town;免登录或 admin 请求时可能为空 */
32
+ town?: {
33
+ town_id: string;
34
34
  status: string;
35
35
  };
36
36
  /** 原始 HTTP 请求 */
@@ -1 +1 @@
1
- {"version":3,"file":"installable-service.d.ts","sourceRoot":"","sources":["../../src/service/installable-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installable-service.d.ts","sourceRoot":"","sources":["../../src/service/installable-service.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ export class InstallableService extends Service {
42
42
  self.action(actionId, async (svcCtx) => {
43
43
  return await config.handler({
44
44
  user: svcCtx.user,
45
- studio: svcCtx.studio,
45
+ town: svcCtx.town,
46
46
  request: svcCtx.request ?? new Request("http://local"),
47
47
  json: async () => svcCtx.input,
48
48
  text: async () => svcCtx.raw_body ?? JSON.stringify(svcCtx.input),
@@ -1 +1 @@
1
- {"version":3,"file":"installable-service.js","sourceRoot":"","sources":["../../src/service/installable-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installable-service.js","sourceRoot":"","sources":["../../src/service/installable-service.ts"],"names":[],"mappings":"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"}
@@ -31,16 +31,16 @@ export function formatRouteAuth(auth) {
31
31
  */
32
32
  export function formatInstructionDocument(input) {
33
33
  const lines = [];
34
- lines.push("# Downcity City Instruction");
34
+ lines.push("# Downcity CityBase Instruction");
35
35
  lines.push("");
36
- lines.push("## City");
37
- lines.push("City 是 Downcity 的基础设施运行容器,负责挂载 Service、初始化内置 env/studios 能力、统一处理 /v1/* HTTP 路由,以及校验 user_token 与 admin_secret_key。");
36
+ lines.push("## CityBase");
37
+ lines.push("CityBase 是 Downcity 的服务端基础设施运行容器,负责挂载 Service、初始化内置 env/towns 能力、统一处理 /v1/* HTTP 路由,以及校验 user_token 与 admin_secret_key。");
38
38
  lines.push("");
39
39
  lines.push("基础使用:");
40
- lines.push("1. 创建 City 实例。");
41
- lines.push("2. 通过 city.use(...) 注册业务 Service、AIService 或带 install(ctx) 生命周期的服务。");
42
- lines.push("3. 先调用 await city.health() 完成初始化。");
43
- lines.push("4. 通过 city.router().fetch 或 city.handleRequest(...) 对外提供请求处理。");
40
+ lines.push("1. 创建 CityBase 实例。");
41
+ lines.push("2. 通过 base.use(...) 注册业务 Service、AIService 或带 install(ctx) 生命周期的服务。");
42
+ lines.push("3. 先调用 await base.health() 完成初始化。");
43
+ lines.push("4. 通过 base.router().fetch 或 base.handleRequest(...) 对外提供请求处理。");
44
44
  lines.push("");
45
45
  lines.push(`内置服务:${input.base.builtin_services.join(", ")}`);
46
46
  lines.push(`当前已加载模块:${input.base.loaded_modules.join(", ")}`);
@@ -1 +1 @@
1
- {"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../src/service/instruction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instruction.js","sourceRoot":"","sources":["../../src/service/instruction.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { Database, DbClient } from "../store/db.js";
14
14
  import type { RuntimeUser } from "../core/auth/types.js";
15
15
  import type { Authenticator } from "../core/auth/authenticator.js";
16
16
  import type { EnvProvider } from "../core/runtime.js";
17
- import type { StudioStore } from "./studios/studio-store.js";
17
+ import type { TownStore } from "./towns/town-store.js";
18
18
  import type { InstructionActionDefinition, InstructionCapable, InstructionDefinition } from "./instruction.js";
19
19
  /** 当前请求最终解析出的身份。 */
20
20
  export type RouteIdentity = "guest" | "user" | "admin";
@@ -37,9 +37,9 @@ export interface Context {
37
37
  identity?: {
38
38
  kind: RouteIdentity;
39
39
  };
40
- /** 所属 studio */
41
- studio?: {
42
- studio_id: string;
40
+ /** 所属 town */
41
+ town?: {
42
+ town_id: string;
43
43
  status: string;
44
44
  };
45
45
  /** 当前解析的 variant(如 AI model、翻译语言对等)。由 Service 自行注入 */
@@ -105,7 +105,7 @@ export declare class Service {
105
105
  };
106
106
  _authenticator?: Authenticator;
107
107
  _env?: EnvProvider;
108
- _studioStore?: StudioStore;
108
+ _townStore?: TownStore;
109
109
  /** 原始数据库实例(better-sqlite3 / D1 等) */
110
110
  _raw?: unknown;
111
111
  /** 服务公网 URL */
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAM/G,oBAAoB;AACpB,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AACvD,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AAM/D,MAAM,WAAW,OAAO;IACtB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,aAAa;IACb,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC;IACnC,cAAc;IACd,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,sDAAsD;IACtD,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACvE,0BAA0B;IAC1B,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,iBAAiB;IACjB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,gBAAgB;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,kBAAkB;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAMD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,oDAAoD;IACpD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAG9D;AAMD,qBAAa,OAAO;IAClB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,OAAc;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,mBAAmB;IACnB,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAEpC,iBAAiB;IACjB,OAAO,CAAC,SAAS,CAAkF;IAInG,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE,CAAC;IAChC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEN,OAAO,EAAE;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAAC,CAAC;QACrD,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC;KACxB;IASK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM;IAa9D,oBAAoB;IACpB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInC,sBAAsB;IACtB,IAAI,IAAI,MAAM,EAAE;IAIhB,iCAAiC;IACjC,eAAe,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAIrF;;OAEG;IACH,uBAAuB,IAAI,2BAA2B,EAAE;CAOzD;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,kBAAkB,CAAC"}
@@ -39,7 +39,7 @@ export class Service {
39
39
  _client;
40
40
  _authenticator;
41
41
  _env;
42
- _studioStore;
42
+ _townStore;
43
43
  /** 原始数据库实例(better-sqlite3 / D1 等) */
44
44
  _raw;
45
45
  /** 服务公网 URL */
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AA8EpD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,OAAO;IACT,EAAE,CAAS;IACX,IAAI,CAAS;IACtB,6CAA6C;IACpC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,MAAM,CAA+C;IACrD,GAAG,CAAoB;IAChC,mBAAmB;IACnB,WAAW,CAAyB;IAEpC,iBAAiB;IACT,SAAS,GAAG,IAAI,GAAG,EAAuE,CAAC;IAEnG,gCAAgC;IAEhC,GAAG,CAAY;IACf,OAAO,CAAyB;IAChC,cAAc,CAAiB;IAC/B,IAAI,CAAe;IACnB,YAAY,CAAe;IAE3B,qCAAqC;IACrC,IAAI,CAAW;IAEf,eAAe;IACf,QAAQ,CAAU;IAElB,YAAY,OAKX;QACC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,6BAA6B;IAE7B,KAAK,CAAC,OAAO,KAAmB,CAAC;IAEjC,kCAAkC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAU,EAAE,EAAY,EAAE,IAAoB;QACnD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;YACrB,MAAM;YACN,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM;YAC9B,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC;SACrC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACxC,CAAC;IAED,sBAAsB;IACtB,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,iCAAiC;IACjC,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AA8EpD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,OAAO;IACT,EAAE,CAAS;IACX,IAAI,CAAS;IACtB,6CAA6C;IACpC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAClB,MAAM,CAA+C;IACrD,GAAG,CAAoB;IAChC,mBAAmB;IACnB,WAAW,CAAyB;IAEpC,iBAAiB;IACT,SAAS,GAAG,IAAI,GAAG,EAAuE,CAAC;IAEnG,gCAAgC;IAEhC,GAAG,CAAY;IACf,OAAO,CAAyB;IAChC,cAAc,CAAiB;IAC/B,IAAI,CAAe;IACnB,UAAU,CAAa;IAEvB,qCAAqC;IACrC,IAAI,CAAW;IAEf,eAAe;IACf,QAAQ,CAAU;IAElB,YAAY,OAKX;QACC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,6BAA6B;IAE7B,KAAK,CAAC,OAAO,KAAmB,CAAC;IAEjC,kCAAkC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAU,EAAE,EAAY,EAAE,IAAoB;QACnD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE;YACrB,MAAM;YACN,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM;YAC9B,IAAI,EAAE,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC;SACrC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACxC,CAAC;IAED,sBAAsB;IACtB,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,iCAAiC;IACjC,eAAe;QACb,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
@@ -1,19 +1,19 @@
1
1
  /**
2
- * Studio 数据库 schema 模块。
2
+ * Town 数据库 schema 模块。
3
3
  *
4
- * 定义 Downcity 内置的 Studio 表结构(SQLite + Postgres)。
5
- * Studio 是 City 多租户隔离的基本单位。
4
+ * 定义 Downcity 内置的 Town 表结构(SQLite + Postgres)。
5
+ * Town 是 City 多租户隔离的基本单位。
6
6
  */
7
7
  /**
8
- * 默认 SQLite Studio 表。
8
+ * 默认 SQLite Town 表。
9
9
  */
10
- export declare const sqliteStudios: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
11
- name: "studios";
10
+ export declare const sqliteTowns: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
11
+ name: "towns";
12
12
  schema: undefined;
13
13
  columns: {
14
- studio_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
15
- name: "studio_id";
16
- tableName: "studios";
14
+ town_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
15
+ name: "town_id";
16
+ tableName: "towns";
17
17
  dataType: "string";
18
18
  columnType: "SQLiteText";
19
19
  data: string;
@@ -32,7 +32,7 @@ export declare const sqliteStudios: import("drizzle-orm/sqlite-core").SQLiteTabl
32
32
  }>;
33
33
  name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
34
34
  name: "name";
35
- tableName: "studios";
35
+ tableName: "towns";
36
36
  dataType: "string";
37
37
  columnType: "SQLiteText";
38
38
  data: string;
@@ -51,7 +51,7 @@ export declare const sqliteStudios: import("drizzle-orm/sqlite-core").SQLiteTabl
51
51
  }>;
52
52
  status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
53
53
  name: "status";
54
- tableName: "studios";
54
+ tableName: "towns";
55
55
  dataType: "string";
56
56
  columnType: "SQLiteText";
57
57
  data: string;
@@ -70,7 +70,7 @@ export declare const sqliteStudios: import("drizzle-orm/sqlite-core").SQLiteTabl
70
70
  }>;
71
71
  created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
72
72
  name: "created_at";
73
- tableName: "studios";
73
+ tableName: "towns";
74
74
  dataType: "string";
75
75
  columnType: "SQLiteText";
76
76
  data: string;
@@ -89,7 +89,7 @@ export declare const sqliteStudios: import("drizzle-orm/sqlite-core").SQLiteTabl
89
89
  }>;
90
90
  updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
91
91
  name: "updated_at";
92
- tableName: "studios";
92
+ tableName: "towns";
93
93
  dataType: "string";
94
94
  columnType: "SQLiteText";
95
95
  data: string;
@@ -110,15 +110,15 @@ export declare const sqliteStudios: import("drizzle-orm/sqlite-core").SQLiteTabl
110
110
  dialect: "sqlite";
111
111
  }>;
112
112
  /**
113
- * 默认 Postgres Studio 表。
113
+ * 默认 Postgres Town 表。
114
114
  */
115
- export declare const pgStudios: import("drizzle-orm/pg-core").PgTableWithColumns<{
116
- name: "studios";
115
+ export declare const pgTowns: import("drizzle-orm/pg-core").PgTableWithColumns<{
116
+ name: "towns";
117
117
  schema: undefined;
118
118
  columns: {
119
- studio_id: import("drizzle-orm/pg-core").PgColumn<{
120
- name: "studio_id";
121
- tableName: "studios";
119
+ town_id: import("drizzle-orm/pg-core").PgColumn<{
120
+ name: "town_id";
121
+ tableName: "towns";
122
122
  dataType: "string";
123
123
  columnType: "PgText";
124
124
  data: string;
@@ -135,7 +135,7 @@ export declare const pgStudios: import("drizzle-orm/pg-core").PgTableWithColumns
135
135
  }, {}, {}>;
136
136
  name: import("drizzle-orm/pg-core").PgColumn<{
137
137
  name: "name";
138
- tableName: "studios";
138
+ tableName: "towns";
139
139
  dataType: "string";
140
140
  columnType: "PgText";
141
141
  data: string;
@@ -152,7 +152,7 @@ export declare const pgStudios: import("drizzle-orm/pg-core").PgTableWithColumns
152
152
  }, {}, {}>;
153
153
  status: import("drizzle-orm/pg-core").PgColumn<{
154
154
  name: "status";
155
- tableName: "studios";
155
+ tableName: "towns";
156
156
  dataType: "string";
157
157
  columnType: "PgText";
158
158
  data: string;
@@ -169,7 +169,7 @@ export declare const pgStudios: import("drizzle-orm/pg-core").PgTableWithColumns
169
169
  }, {}, {}>;
170
170
  created_at: import("drizzle-orm/pg-core").PgColumn<{
171
171
  name: "created_at";
172
- tableName: "studios";
172
+ tableName: "towns";
173
173
  dataType: "string";
174
174
  columnType: "PgText";
175
175
  data: string;
@@ -186,7 +186,7 @@ export declare const pgStudios: import("drizzle-orm/pg-core").PgTableWithColumns
186
186
  }, {}, {}>;
187
187
  updated_at: import("drizzle-orm/pg-core").PgColumn<{
188
188
  name: "updated_at";
189
- tableName: "studios";
189
+ tableName: "towns";
190
190
  dataType: "string";
191
191
  columnType: "PgText";
192
192
  data: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/service/towns/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlB,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Town 数据库 schema 模块。
3
+ *
4
+ * 定义 Downcity 内置的 Town 表结构(SQLite + Postgres)。
5
+ * Town 是 City 多租户隔离的基本单位。
6
+ */
7
+ import { pgTable, text as pgText } from "drizzle-orm/pg-core";
8
+ import { sqliteTable, text as sqliteText } from "drizzle-orm/sqlite-core";
9
+ const DEFAULT_TOWN_TABLE = "towns";
10
+ /**
11
+ * 默认 SQLite Town 表。
12
+ */
13
+ export const sqliteTowns = sqliteTable(DEFAULT_TOWN_TABLE, {
14
+ /**
15
+ * Town ID。
16
+ */
17
+ town_id: sqliteText("town_id").primaryKey(),
18
+ /**
19
+ * Town 名称。
20
+ */
21
+ name: sqliteText("name").notNull(),
22
+ /**
23
+ * Town 状态。
24
+ */
25
+ status: sqliteText("status").notNull(),
26
+ /**
27
+ * Town 创建时间。
28
+ */
29
+ created_at: sqliteText("created_at").notNull(),
30
+ /**
31
+ * Town 更新时间。
32
+ */
33
+ updated_at: sqliteText("updated_at").notNull(),
34
+ });
35
+ /**
36
+ * 默认 Postgres Town 表。
37
+ */
38
+ export const pgTowns = pgTable(DEFAULT_TOWN_TABLE, {
39
+ /**
40
+ * Town ID。
41
+ */
42
+ town_id: pgText("town_id").primaryKey(),
43
+ /**
44
+ * Town 名称。
45
+ */
46
+ name: pgText("name").notNull(),
47
+ /**
48
+ * Town 状态。
49
+ */
50
+ status: pgText("status").notNull(),
51
+ /**
52
+ * Town 创建时间。
53
+ */
54
+ created_at: pgText("created_at").notNull(),
55
+ /**
56
+ * Town 更新时间。
57
+ */
58
+ updated_at: pgText("updated_at").notNull(),
59
+ });
60
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/service/towns/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,kBAAkB,EAAE;IACzD;;OAEG;IACH,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;IAE3C;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAElC;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAEtC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAE9C;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC/C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE;IACjD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;IAEvC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAE9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAElC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAE1C;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC3C,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Town 数据存储。
3
+ *
4
+ * 基于 CityTableApi,不直接依赖 Drizzle。
5
+ */
6
+ import type { CityTableApi } from "../../store/table-api.js";
7
+ import type { Town, TownCreateInput, TownStatus } from "./types.js";
8
+ export declare class TownStore {
9
+ private table;
10
+ constructor(table: CityTableApi<Town>);
11
+ list(): Promise<Town[]>;
12
+ get(town_id: string): Promise<Town | undefined>;
13
+ create(input: TownCreateInput): Promise<Town>;
14
+ setStatus(town_id: string, status: TownStatus): Promise<Town>;
15
+ remove(town_id: string): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=town-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"town-store.d.ts","sourceRoot":"","sources":["../../../src/service/towns/town-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpE,qBAAa,SAAS;IACR,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;IAEvC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIvB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAK/C,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7D,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7C"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Town 数据存储。
3
+ *
4
+ * 基于 CityTableApi,不直接依赖 Drizzle。
5
+ */
6
+ import { randomSecret } from "../../utils/helpers.js";
7
+ export class TownStore {
8
+ table;
9
+ constructor(table) {
10
+ this.table = table;
11
+ }
12
+ async list() {
13
+ return this.table.select();
14
+ }
15
+ async get(town_id) {
16
+ const rows = await this.table.select({ town_id });
17
+ return rows[0];
18
+ }
19
+ async create(input) {
20
+ const name = String(input.name ?? "").trim();
21
+ if (!name)
22
+ throw new TypeError("Town name is required");
23
+ const now = new Date().toISOString();
24
+ const town = {
25
+ town_id: input.town_id ?? `town_${randomSecret(12)}`,
26
+ name,
27
+ status: "active",
28
+ created_at: now,
29
+ updated_at: now,
30
+ };
31
+ await this.table.insert(town);
32
+ return town;
33
+ }
34
+ async setStatus(town_id, status) {
35
+ if (status !== "active" && status !== "paused") {
36
+ throw new TypeError(`Invalid town status: ${String(status)}`);
37
+ }
38
+ const existing = await this.get(town_id);
39
+ if (!existing)
40
+ throw new Error(`Unknown town: ${town_id}`);
41
+ const next = { ...existing, status, updated_at: new Date().toISOString() };
42
+ await this.table.update({ where: { town_id }, values: next });
43
+ return next;
44
+ }
45
+ async remove(town_id) {
46
+ await this.table.delete({ town_id });
47
+ }
48
+ }
49
+ //# sourceMappingURL=town-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"town-store.js","sourceRoot":"","sources":["../../../src/service/towns/town-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,OAAO,SAAS;IACA;IAApB,YAAoB,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAEjD,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAmB,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAsB;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAS;YACjB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ,YAAY,CAAC,EAAE,CAAC,EAAE;YACpD,IAAI;YACJ,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;SAChB,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,MAAkB;QACjD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,IAAI,SAAS,CAAC,wBAAwB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAS,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACjF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAmB,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * towns 内置服务。
3
+ *
4
+ * 关键说明(中文)
5
+ * - City 默认注册该 service。
6
+ * - TownStore 由 City 初始化并注入,确保鉴权和管理 API 使用同一份 town 状态。
7
+ */
8
+ import { Service } from "../service.js";
9
+ export declare class TownsService extends Service {
10
+ private store;
11
+ private auth;
12
+ constructor();
13
+ _onInit(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=towns-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"towns-service.d.ts","sourceRoot":"","sources":["../../../src/service/towns/towns-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,qBAAa,YAAa,SAAQ,OAAO;IACvC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,IAAI,CAAiB;;IA0CvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * towns 内置服务。
3
+ *
4
+ * 关键说明(中文)
5
+ * - City 默认注册该 service。
6
+ * - TownStore 由 City 初始化并注入,确保鉴权和管理 API 使用同一份 town 状态。
7
+ */
8
+ import { Service } from "../service.js";
9
+ export class TownsService extends Service {
10
+ store;
11
+ auth;
12
+ constructor() {
13
+ super({ id: "towns", name: "Towns" });
14
+ this.instruction = [
15
+ "管理 City 中的 town 实体与用户 token 签发。",
16
+ "town 是用户侧调用的边界,user_token 会绑定到具体 town。",
17
+ "管理端通常先创建 town,再通过 tokens/apply 为某个 user_id 签发可调用的 user_token。",
18
+ ].join("\n");
19
+ this.action("list", async () => ({ items: await this.store.list() }), { method: "GET", auth: ["admin"] });
20
+ this.action("create", async (ctx) => {
21
+ return await this.store.create({
22
+ name: String(ctx.input.name ?? ""),
23
+ town_id: String(ctx.input.town_id ?? "").trim() || undefined,
24
+ });
25
+ }, { auth: ["admin"] });
26
+ this.action("pause", async (ctx) => {
27
+ return await this.store.setStatus(String(ctx.input.town_id ?? ""), "paused");
28
+ }, { auth: ["admin"] });
29
+ this.action("activate", async (ctx) => {
30
+ return await this.store.setStatus(String(ctx.input.town_id ?? ""), "active");
31
+ }, { auth: ["admin"] });
32
+ this.action("remove", async (ctx) => {
33
+ await this.store.remove(String(ctx.input.town_id ?? ""));
34
+ return { success: true };
35
+ }, { auth: ["admin"] });
36
+ this.action("tokens/apply", async (ctx) => {
37
+ return await this.auth.createToken({
38
+ town_id: String(ctx.input.town_id ?? ""),
39
+ user_id: String(ctx.input.user_id ?? ""),
40
+ metadata: ctx.input.metadata,
41
+ ttl: ctx.input.ttl,
42
+ });
43
+ }, { auth: ["admin"] });
44
+ }
45
+ async _onInit() {
46
+ this.store = this._townStore;
47
+ this.auth = this._authenticator;
48
+ const existing = await this.store.get("town_downcity");
49
+ if (!existing) {
50
+ await this.store.create({ town_id: "town_downcity", name: "Downcity" });
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=towns-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"towns-service.js","sourceRoot":"","sources":["../../../src/service/towns/towns-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Town 层公共类型。
3
+ *
4
+ * Town 是 City 多租户隔离的基本单位,每个 API 调用都绑定到一个 Town。
5
+ */
6
+ /**
7
+ * Town 当前状态。
8
+ */
9
+ export type TownStatus = "active" | "paused";
10
+ /**
11
+ * City 中的 Town 记录。
12
+ */
13
+ export interface Town extends Record<string, unknown> {
14
+ /**
15
+ * Town 的唯一 ID。
16
+ */
17
+ town_id: string;
18
+ /**
19
+ * Town 展示名称。
20
+ */
21
+ name: string;
22
+ /**
23
+ * Town 当前状态。
24
+ */
25
+ status: TownStatus;
26
+ /**
27
+ * Town 创建时间。
28
+ */
29
+ created_at: string;
30
+ /**
31
+ * Town 最后更新时间。
32
+ */
33
+ updated_at: string;
34
+ }
35
+ /**
36
+ * 创建 Town 时的输入。
37
+ */
38
+ export interface TownCreateInput {
39
+ /**
40
+ * Town 展示名称。
41
+ */
42
+ name: string;
43
+ /**
44
+ * 自定义 Town ID。
45
+ *
46
+ * 未传入时由 City 自动生成 `town_${randomSecret(12)}` 格式的 ID。
47
+ * 传入时直接采用该值,便于在种子场景中使用固定 ID。
48
+ */
49
+ town_id?: string;
50
+ }
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/service/towns/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,IAAK,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}