@codecks/fetch 0.1.5 → 0.1.7
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.
- package/README.md +317 -10
- package/dist/_exploration/api-requester.d.ts +4 -4
- package/dist/_exploration/api-requester.js +5 -4
- package/dist/_exploration/create-hooks.d.ts +47 -5
- package/dist/_exploration/create-hooks.js +193 -88
- package/dist/_exploration/loader.d.ts +2 -2
- package/dist/_exploration/loader.js +7 -2
- package/dist/_exploration/store.d.ts +4 -4
- package/dist/_exploration/store.js +76 -73
- package/dist/{_root-D1Faf8cg.d.ts → _root-BW9uzB79.d.ts} +1 -1
- package/dist/immediate-cache-DiH8tpJM.js +237 -0
- package/dist/{index-DUBsesYl.d.ts → index-k-KPWV9R.d.ts} +8 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +6 -5
- package/dist/{loader-types-Dp0CSVTf.d.ts → loader-types-fd5tV0FD.d.ts} +4 -8
- package/dist/{loader-utils-Du-CTKH-.d.ts → loader-utils-BqZKAn_v.d.ts} +2 -2
- package/dist/{query-helpers-DsMMOtSO.js → query-helpers-iX1fiqLv.js} +41 -16
- package/dist/{query-type-Dx5ZCv5N.d.ts → query-type-BqQ9oX_U.d.ts} +55 -10
- package/dist/{store-B6JWZnAO.d.ts → store-BvEJzUVp.d.ts} +104 -6
- package/package.json +4 -3
- package/schema/models/account.md +104 -0
- package/schema/models/accountOnboarding.md +15 -0
- package/schema/models/accountOnboardingStep.md +14 -0
- package/schema/models/accountRole.md +19 -0
- package/schema/models/accountUserAchievement.md +17 -0
- package/schema/models/accountUserSetting.md +20 -0
- package/schema/models/activeTimeTracker.md +19 -0
- package/schema/models/activity.md +30 -0
- package/schema/models/affiliateCode.md +30 -0
- package/schema/models/affiliateCodeStat.md +19 -0
- package/schema/models/app.md +10 -0
- package/schema/models/appInstallation.md +19 -0
- package/schema/models/assigneeAssignment.md +18 -0
- package/schema/models/assigneeDeckAssignment.md +20 -0
- package/schema/models/attachment.md +23 -0
- package/schema/models/autoFinishedTimeTrackingSegment.md +20 -0
- package/schema/models/card.md +82 -0
- package/schema/models/cardDiffNotification.md +22 -0
- package/schema/models/cardHistory.md +20 -0
- package/schema/models/cardOrder.md +17 -0
- package/schema/models/cardOrderInDeck.md +18 -0
- package/schema/models/cardPreset.md +19 -0
- package/schema/models/cardSubscription.md +19 -0
- package/schema/models/cardUpvote.md +21 -0
- package/schema/models/cardsEffortHistory.md +9 -0
- package/schema/models/cardsFinishedHistory.md +16 -0
- package/schema/models/cardsStatusHistory.md +9 -0
- package/schema/models/cardsTimeToFinished.md +18 -0
- package/schema/models/dailyDiscordGuildVoteMembership.md +15 -0
- package/schema/models/dailyPublicProjectMembership.md +15 -0
- package/schema/models/deck.md +53 -0
- package/schema/models/deckAssignment.md +18 -0
- package/schema/models/deckGuardian.md +17 -0
- package/schema/models/deckSubscription.md +18 -0
- package/schema/models/discordGuild.md +30 -0
- package/schema/models/discordMember.md +21 -0
- package/schema/models/discordProjectNotification.md +19 -0
- package/schema/models/discordSlashCommand.md +28 -0
- package/schema/models/dueCard.md +18 -0
- package/schema/models/file.md +26 -0
- package/schema/models/handCard.md +18 -0
- package/schema/models/integration.md +23 -0
- package/schema/models/invoice.md +21 -0
- package/schema/models/lastSeenCardUpvote.md +17 -0
- package/schema/models/milestone.md +39 -0
- package/schema/models/milestoneProgress.md +14 -0
- package/schema/models/milestoneProject.md +17 -0
- package/schema/models/pinnedMilestone.md +22 -0
- package/schema/models/project.md +58 -0
- package/schema/models/projectOrder.md +18 -0
- package/schema/models/projectSelection.md +18 -0
- package/schema/models/projectTag.md +19 -0
- package/schema/models/projectUser.md +18 -0
- package/schema/models/projectUserSetting.md +15 -0
- package/schema/models/publicProjectInfo.md +20 -0
- package/schema/models/publicProjectMembership.md +17 -0
- package/schema/models/publicProjectVisit.md +16 -0
- package/schema/models/queueEntry.md +21 -0
- package/schema/models/queueSelection.md +19 -0
- package/schema/models/release.md +12 -0
- package/schema/models/resolvable.md +32 -0
- package/schema/models/resolvableEntry.md +28 -0
- package/schema/models/resolvableEntryHistory.md +20 -0
- package/schema/models/resolvableEntryReaction.md +23 -0
- package/schema/models/resolvableNotification.md +30 -0
- package/schema/models/resolvableParticipant.md +25 -0
- package/schema/models/resolvableParticipantHistory.md +23 -0
- package/schema/models/savedSearch.md +18 -0
- package/schema/models/sprint.md +42 -0
- package/schema/models/sprintConfig.md +38 -0
- package/schema/models/sprintConfigProgress.md +14 -0
- package/schema/models/sprintProgress.md +14 -0
- package/schema/models/sprintProject.md +17 -0
- package/schema/models/stripeAccountSync.md +29 -0
- package/schema/models/timeTrackingSegment.md +24 -0
- package/schema/models/timeTrackingSum.md +18 -0
- package/schema/models/user.md +67 -0
- package/schema/models/userDismissedHint.md +16 -0
- package/schema/models/userEmail.md +18 -0
- package/schema/models/userInvitation.md +20 -0
- package/schema/models/userInviteCode.md +23 -0
- package/schema/models/userOnboarding.md +14 -0
- package/schema/models/userProjectAccess.md +17 -0
- package/schema/models/userReportEmail.md +19 -0
- package/schema/models/userReportSetting.md +23 -0
- package/schema/models/userReportToken.md +18 -0
- package/schema/models/userTag.md +18 -0
- package/schema/models/visionBoard.md +21 -0
- package/schema/models/visionBoardQuery.md +22 -0
- package/schema/models/wizard.md +19 -0
- package/schema/models/workflowItem.md +45 -0
- package/schema/models/workflowItemHistory.md +18 -0
- package/schema/overview.md +110 -0
- package/schema/query-syntax.md +184 -0
|
@@ -1,9 +1,36 @@
|
|
|
1
|
-
import { ModelDesc, ModelQuery, RelationEntry, TypedField } from "./query-type-
|
|
2
|
-
import { AccountId, AccountOnboardingStepId, ActiveTimeTrackerId, ActivityId, AffiliateCodeId, AppId, AppInstallationId, AttachmentId, CardId, CardPresetId, CardSubscriptionId, CardUpvoteId, DeckId, DeckSubscriptionId, DiscordGuildId, DiscordMemberId, DiscordProjectNotificationId, DiscordSlashCommandId, FileId, IntegrationId, InvoiceId, MilestoneId, PinnedMilestoneId, ProjectId, ProjectSelectionId, ProjectTagId, QueueEntryId, QueueSelectionId, ReleaseId, ResolvableEntryId, ResolvableEntryReactionId, ResolvableId, SavedSearchId, SprintConfigId, SprintId, TimeTrackingSegmentId, UserEmailId, UserId, UserInvitationId, UserInviteCodeId, UserReportEmailId, UserReportSettingId, UserReportTokenId, UserTagId, VisionBoardId, VisionBoardQueryId, WizardId, WorkflowItemId, modelMap$1 as modelMap } from "./index-
|
|
3
|
-
import { BaseLoader, LoaderResult } from "./loader-types-
|
|
1
|
+
import { ModelDesc, ModelQuery, RelationEntry, TypedField } from "./query-type-BqQ9oX_U.js";
|
|
2
|
+
import { AccountId, AccountOnboardingStepId, ActiveTimeTrackerId, ActivityId, AffiliateCodeId, AppId, AppInstallationId, AttachmentId, CardId, CardPresetId, CardSubscriptionId, CardUpvoteId, DeckId, DeckSubscriptionId, DiscordGuildId, DiscordMemberId, DiscordProjectNotificationId, DiscordSlashCommandId, FileId, IntegrationId, InvoiceId, MilestoneId, PinnedMilestoneId, ProjectId, ProjectSelectionId, ProjectTagId, QueueEntryId, QueueSelectionId, ReleaseId, ResolvableEntryId, ResolvableEntryReactionId, ResolvableId, SavedSearchId, SprintConfigId, SprintId, TimeTrackingSegmentId, UserEmailId, UserId, UserInvitationId, UserInviteCodeId, UserReportEmailId, UserReportSettingId, UserReportTokenId, UserTagId, VisionBoardId, VisionBoardQueryId, WizardId, WorkflowItemId, modelMap$1 as modelMap } from "./index-k-KPWV9R.js";
|
|
3
|
+
import { BaseLoader, LoaderResult, MissingDataRequest } from "./loader-types-fd5tV0FD.js";
|
|
4
4
|
|
|
5
|
+
//#region src/_exploration/optimistic-manager.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Represents a single optimistic update layer
|
|
9
|
+
* Contains field updates for one mutation
|
|
10
|
+
* Internal implementation - wrapped by ImmediateCache to provide full OptimisticUpdater interface
|
|
11
|
+
*/
|
|
12
|
+
declare class OptimisticLayer {
|
|
13
|
+
private data;
|
|
14
|
+
private affectedFields;
|
|
15
|
+
setField(model: string, id: string, field: string, value: any): void;
|
|
16
|
+
hasChanges(): boolean;
|
|
17
|
+
getAffectedFieldKeys(): Iterable<string>;
|
|
18
|
+
entries(): IterableIterator<[string, any]>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Manages a stack of optimistic layers with O(1) lookups
|
|
22
|
+
*
|
|
23
|
+
* Design:
|
|
24
|
+
* - Maintains a stack of layers (one per in-flight mutation)
|
|
25
|
+
* - Rebuilds flattened view when layers added/removed for fast reads
|
|
26
|
+
* - Later layers override earlier ones (parallel updates supported)
|
|
27
|
+
* - Auto-cleanup via promise lifecycle
|
|
28
|
+
*/
|
|
29
|
+
//#endregion
|
|
5
30
|
//#region src/_exploration/immediate-cache.d.ts
|
|
6
31
|
type FieldMeta = {
|
|
32
|
+
state: "optimistic";
|
|
33
|
+
} | {
|
|
7
34
|
state: "fresh";
|
|
8
35
|
} | {
|
|
9
36
|
state: "dirty";
|
|
@@ -13,21 +40,58 @@ interface FieldCache<T = any> {
|
|
|
13
40
|
partKeys: string[];
|
|
14
41
|
meta: FieldMeta;
|
|
15
42
|
}
|
|
43
|
+
type FieldLocation = {
|
|
44
|
+
model: string;
|
|
45
|
+
id: string;
|
|
46
|
+
field: string;
|
|
47
|
+
fieldKey: string;
|
|
48
|
+
type: "field" | "relation";
|
|
49
|
+
cache: FieldCache;
|
|
50
|
+
};
|
|
16
51
|
type ModelInstance = Map<string, FieldCache>;
|
|
17
52
|
type ModelCache = Map<string, ModelInstance>;
|
|
53
|
+
type FieldSub = () => void;
|
|
54
|
+
/**
|
|
55
|
+
* Wrapper that provides full OptimisticUpdater interface
|
|
56
|
+
* Delegates writes to OptimisticLayer and reads to ImmediateCache
|
|
57
|
+
*/
|
|
58
|
+
declare class OptimisticUpdater {
|
|
59
|
+
private layer;
|
|
60
|
+
private cache;
|
|
61
|
+
constructor(layer: OptimisticLayer,
|
|
62
|
+
// OptimisticLayer from optimistic-manager
|
|
63
|
+
cache: ImmediateCache);
|
|
64
|
+
setField(model: string, id: string, field: string, value: any): void;
|
|
65
|
+
getField(model: string, id: string, field: string): FieldCache | undefined;
|
|
66
|
+
}
|
|
18
67
|
declare class ImmediateCache {
|
|
19
68
|
cache: ModelCache;
|
|
20
|
-
partKeyToFields: Map<string,
|
|
69
|
+
partKeyToFields: Map<string, FieldLocation[]>;
|
|
70
|
+
private fieldSubscriptions;
|
|
71
|
+
private optimisticManager;
|
|
21
72
|
private getInstanceKey;
|
|
22
73
|
get(model: string, key: string, field: string): FieldCache | undefined;
|
|
74
|
+
subscribe(fieldKey: string, notifyFn: FieldSub): () => void;
|
|
23
75
|
set(model: string, key: string, partialInstance: Record<string, {
|
|
24
76
|
value: unknown;
|
|
25
77
|
partKeys: string[];
|
|
26
|
-
|
|
27
|
-
|
|
78
|
+
type: "field" | "relation";
|
|
79
|
+
}>, meta: FieldMeta): FieldSub[];
|
|
80
|
+
markDirty(partKeys: string[]): MissingDataRequest[];
|
|
81
|
+
/**
|
|
82
|
+
* Create a new optimistic layer bound to a promise and apply updates
|
|
83
|
+
* The layer will be automatically removed when the promise settles
|
|
84
|
+
* @param promise - Promise to bind the layer lifecycle to
|
|
85
|
+
* @param updateFn - Function to apply optimistic updates to the layer
|
|
86
|
+
* @returns The updater object with both read and write capabilities
|
|
87
|
+
*/
|
|
88
|
+
createOptimisticLayer(promise: Promise<any>, updateFn: (updater: OptimisticUpdater) => void): OptimisticUpdater;
|
|
28
89
|
}
|
|
29
90
|
//#endregion
|
|
30
91
|
//#region src/_exploration/store.d.ts
|
|
92
|
+
type QueryDep = {
|
|
93
|
+
keys: string[];
|
|
94
|
+
};
|
|
31
95
|
type ModelMap = typeof modelMap;
|
|
32
96
|
declare class Store {
|
|
33
97
|
private loader;
|
|
@@ -834,6 +898,7 @@ declare class Store {
|
|
|
834
898
|
}>;
|
|
835
899
|
attachments: RelationEntry<"attachment", {
|
|
836
900
|
readonly type: "hasMany";
|
|
901
|
+
readonly fkAsArray: true;
|
|
837
902
|
}>;
|
|
838
903
|
diffs: RelationEntry<"cardHistory", {
|
|
839
904
|
readonly type: "hasMany";
|
|
@@ -846,15 +911,19 @@ declare class Store {
|
|
|
846
911
|
}>;
|
|
847
912
|
childCards: RelationEntry<"card", {
|
|
848
913
|
readonly type: "hasMany";
|
|
914
|
+
readonly fkAsArray: true;
|
|
849
915
|
}>;
|
|
850
916
|
inDeps: RelationEntry<"card", {
|
|
851
917
|
readonly type: "hasMany";
|
|
918
|
+
readonly fkAsArray: true;
|
|
852
919
|
}>;
|
|
853
920
|
outDeps: RelationEntry<"card", {
|
|
854
921
|
readonly type: "hasMany";
|
|
922
|
+
readonly fkAsArray: true;
|
|
855
923
|
}>;
|
|
856
924
|
cardReferences: RelationEntry<"card", {
|
|
857
925
|
readonly type: "hasMany";
|
|
926
|
+
readonly fkAsArray: true;
|
|
858
927
|
}>;
|
|
859
928
|
upvotes: RelationEntry<"cardUpvote", {
|
|
860
929
|
readonly type: "hasMany";
|
|
@@ -2550,13 +2619,18 @@ declare class Store {
|
|
|
2550
2619
|
}>;
|
|
2551
2620
|
inDeps: RelationEntry<"workflowItem", {
|
|
2552
2621
|
readonly type: "hasMany";
|
|
2622
|
+
readonly fkAsArray: true;
|
|
2553
2623
|
}>;
|
|
2554
2624
|
outDeps: RelationEntry<"workflowItem", {
|
|
2555
2625
|
readonly type: "hasMany";
|
|
2626
|
+
readonly fkAsArray: true;
|
|
2556
2627
|
}>;
|
|
2557
2628
|
}, ["itemId"]>;
|
|
2558
2629
|
};
|
|
2630
|
+
requestedRelationKeys: Map<string, QueryDep>;
|
|
2559
2631
|
constructor(loader: BaseLoader);
|
|
2632
|
+
subscribeToField(fieldKey: string, notifyFn: () => void): () => void;
|
|
2633
|
+
invalidate(partKeyPatterns: string[]): void;
|
|
2560
2634
|
loadData(model: keyof ModelMap, ids: string[], q: ModelQuery<any, any>, acceptDirty?: boolean, iteration?: number): LoaderResult;
|
|
2561
2635
|
onLoaded(model: string, key: string, partialInstance: Record<string, unknown>): void;
|
|
2562
2636
|
/**
|
|
@@ -2564,6 +2638,30 @@ declare class Store {
|
|
|
2564
2638
|
* Accumulates missing requests in the missingRequests array
|
|
2565
2639
|
*/
|
|
2566
2640
|
private checkQueryRecursive;
|
|
2641
|
+
/**
|
|
2642
|
+
* Execute a mutation with optimistic updates
|
|
2643
|
+
*
|
|
2644
|
+
* @example
|
|
2645
|
+
* ```typescript
|
|
2646
|
+
* await store.mutate(
|
|
2647
|
+
* () => api.updateCard('123', {title: 'New Title'}),
|
|
2648
|
+
* {
|
|
2649
|
+
* onMutate: (layer) => {
|
|
2650
|
+
* layer.setField('Card', '123', 'title', 'New Title');
|
|
2651
|
+
* },
|
|
2652
|
+
* onSuccess: () => {
|
|
2653
|
+
* // Optional: invalidate related queries
|
|
2654
|
+
* store.invalidate(['Card:123:title']);
|
|
2655
|
+
* }
|
|
2656
|
+
* }
|
|
2657
|
+
* );
|
|
2658
|
+
* ```
|
|
2659
|
+
*/
|
|
2660
|
+
mutate<T>(mutationFn: () => Promise<T>, options?: {
|
|
2661
|
+
onMutate?: (updater: OptimisticUpdater) => void;
|
|
2662
|
+
onSuccess?: (data: T) => void;
|
|
2663
|
+
onError?: (error: unknown) => void;
|
|
2664
|
+
}): Promise<T>;
|
|
2567
2665
|
}
|
|
2568
2666
|
//#endregion
|
|
2569
2667
|
export { Store };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecks/fetch",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Quickly create deeply nested queries for the Codecks API with advanced TypeScript support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
},
|
|
15
15
|
"author": "Daniel Berndt <daniel@codecks.io>",
|
|
16
16
|
"files": [
|
|
17
|
-
"dist"
|
|
17
|
+
"dist",
|
|
18
|
+
"schema"
|
|
18
19
|
],
|
|
19
20
|
"main": "./dist/index.js",
|
|
20
21
|
"module": "./dist/index.js",
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
"access": "public"
|
|
32
33
|
},
|
|
33
34
|
"scripts": {
|
|
34
|
-
"build": "tsdown",
|
|
35
|
+
"build": "tsdown && vite-node scripts/generate-schema-docs.ts",
|
|
35
36
|
"format": "prettier --write .",
|
|
36
37
|
"check-format": "prettier --check .",
|
|
37
38
|
"dev": "tsdown --watch",
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# account
|
|
2
|
+
|
|
3
|
+
Key: `id`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `id`: string
|
|
8
|
+
- `subdomain`: string
|
|
9
|
+
- `name`: string
|
|
10
|
+
- `billingName`: string, optional
|
|
11
|
+
- `billingLine1`: string, optional
|
|
12
|
+
- `billingLine2`: string, optional
|
|
13
|
+
- `billingZip`: string, optional
|
|
14
|
+
- `billingCity`: string, optional
|
|
15
|
+
- `billingCountryCode`: string, optional
|
|
16
|
+
- `billingEmail`: string, optional
|
|
17
|
+
- `netGiftAmount`: number
|
|
18
|
+
- `persona`: string, optional
|
|
19
|
+
- `createdAt`: Date (ISO string)
|
|
20
|
+
- `disabledAt`: Date (ISO string), optional
|
|
21
|
+
- `totalMediaByteUsage`: bigint
|
|
22
|
+
- `isDisabled`: string
|
|
23
|
+
- `milestonesEnabled`: string
|
|
24
|
+
- `sprintsEnabled`: string
|
|
25
|
+
- `priorityLabels`: object
|
|
26
|
+
- `effortScale`: object
|
|
27
|
+
- `statusChangeDurations`: object
|
|
28
|
+
- `activeFeatureFlags`: object
|
|
29
|
+
- `timeTrackingMode`: string
|
|
30
|
+
- `maxTimeTrackingSegmentMsDuration`: number
|
|
31
|
+
- `timeTrackingSwimLaneInfo`: boolean
|
|
32
|
+
- `workdays`: string
|
|
33
|
+
- `workflowMode`: string
|
|
34
|
+
- `isLearning`: boolean
|
|
35
|
+
- `isNonProfit`: boolean
|
|
36
|
+
- `dependenciesEnabled`: boolean
|
|
37
|
+
- `maxHandSlotCount`: number
|
|
38
|
+
- `seats`: number
|
|
39
|
+
- `activeProjectCount`: number
|
|
40
|
+
- `billingType`: string
|
|
41
|
+
- `allowInheritHeroCover`: boolean
|
|
42
|
+
- `attachmentCoverMode`: string
|
|
43
|
+
- `staffPermission`: string
|
|
44
|
+
- `offeringTrial`: boolean
|
|
45
|
+
- `coupon`: object, optional
|
|
46
|
+
- `hideCompletedCardCountForDecks`: boolean
|
|
47
|
+
- `visionBoardEnabled`: boolean
|
|
48
|
+
- `fallbackEffort`: number
|
|
49
|
+
- `timelineScaleType`: string
|
|
50
|
+
- `startWeekday`: string
|
|
51
|
+
- `disabledById`: string (foreign key ID) → user, optional
|
|
52
|
+
|
|
53
|
+
## Relations
|
|
54
|
+
|
|
55
|
+
### belongsTo
|
|
56
|
+
|
|
57
|
+
- `disabledBy` → [user](user.md) (via `disabledById`)
|
|
58
|
+
|
|
59
|
+
### hasOne
|
|
60
|
+
|
|
61
|
+
- `githubIntegration` → [integration](integration.md)
|
|
62
|
+
- `slackIntegration` → [integration](integration.md)
|
|
63
|
+
- `stripeAccountSync` → [stripeAccountSync](stripeAccountSync.md)
|
|
64
|
+
- `accountOnboarding` → [accountOnboarding](accountOnboarding.md)
|
|
65
|
+
|
|
66
|
+
### hasMany
|
|
67
|
+
|
|
68
|
+
- `cards` → [card](card.md)
|
|
69
|
+
- `invoices` → [invoice](invoice.md)
|
|
70
|
+
- `cardPresets` → [cardPreset](cardPreset.md)
|
|
71
|
+
- `attachments` → [attachment](attachment.md)
|
|
72
|
+
- `discordGuilds` → [discordGuild](discordGuild.md)
|
|
73
|
+
- `timeTrackingSegments` → [timeTrackingSegment](timeTrackingSegment.md)
|
|
74
|
+
- `workflowItems` → [workflowItem](workflowItem.md)
|
|
75
|
+
- `deckAssignments` → [deckAssignment](deckAssignment.md)
|
|
76
|
+
- `assigneeAssignments` → [assigneeAssignment](assigneeAssignment.md)
|
|
77
|
+
- `assigneeDeckAssignments` → [assigneeDeckAssignment](assigneeDeckAssignment.md)
|
|
78
|
+
- `wizards` → [wizard](wizard.md)
|
|
79
|
+
- `milestones` → [milestone](milestone.md)
|
|
80
|
+
- `sprints` → [sprint](sprint.md)
|
|
81
|
+
- `sprintConfigs` → [sprintConfig](sprintConfig.md)
|
|
82
|
+
- `handCards` → [handCard](handCard.md)
|
|
83
|
+
- `resolvables` → [resolvable](resolvable.md)
|
|
84
|
+
- `cardUpvotes` → [cardUpvote](cardUpvote.md)
|
|
85
|
+
- `resolvableParticipants` → [resolvableParticipant](resolvableParticipant.md)
|
|
86
|
+
- `userReportSettings` → [userReportSetting](userReportSetting.md)
|
|
87
|
+
- `cardOrders` → [cardOrder](cardOrder.md)
|
|
88
|
+
- `accountUserAchievements` → [accountUserAchievement](accountUserAchievement.md)
|
|
89
|
+
- `userInviteCodes` → [userInviteCode](userInviteCode.md)
|
|
90
|
+
- `visionBoards` → [visionBoard](visionBoard.md)
|
|
91
|
+
- `deckSubscriptions` → [deckSubscription](deckSubscription.md)
|
|
92
|
+
- `appInstallations` → [appInstallation](appInstallation.md)
|
|
93
|
+
- `files` → [file](file.md)
|
|
94
|
+
- `decks` → [deck](deck.md)
|
|
95
|
+
- `queueEntries` → [queueEntry](queueEntry.md)
|
|
96
|
+
- `visionBoardQueries` → [visionBoardQuery](visionBoardQuery.md)
|
|
97
|
+
- `anyDecks` → [deck](deck.md)
|
|
98
|
+
- `projects` → [project](project.md)
|
|
99
|
+
- `archivedProjects` → [project](project.md)
|
|
100
|
+
- `anyProjects` → [project](project.md)
|
|
101
|
+
- `roles` → [accountRole](accountRole.md)
|
|
102
|
+
- `invitations` → [userInvitation](userInvitation.md)
|
|
103
|
+
- `affiliateCodes` → [affiliateCode](affiliateCode.md)
|
|
104
|
+
- `activities` → [activity](activity.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# accountRole
|
|
2
|
+
|
|
3
|
+
Key: `accountId`, `userId`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `role`: string
|
|
8
|
+
- `createdAt`: Date (ISO string)
|
|
9
|
+
- `lastChangedAt`: Date (ISO string)
|
|
10
|
+
- `roleAsPrio`: number
|
|
11
|
+
- `userId`: string (foreign key ID) → user
|
|
12
|
+
- `accountId`: string (foreign key ID) → account
|
|
13
|
+
|
|
14
|
+
## Relations
|
|
15
|
+
|
|
16
|
+
### belongsTo
|
|
17
|
+
|
|
18
|
+
- `user` → [user](user.md) (via `userId`)
|
|
19
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# accountUserAchievement
|
|
2
|
+
|
|
3
|
+
Key: `accountId`, `userId`, `key`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `value`: object
|
|
8
|
+
- `context`: object
|
|
9
|
+
- `accountId`: string (foreign key ID) → account
|
|
10
|
+
- `userId`: string (foreign key ID) → user
|
|
11
|
+
|
|
12
|
+
## Relations
|
|
13
|
+
|
|
14
|
+
### belongsTo
|
|
15
|
+
|
|
16
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
17
|
+
- `user` → [user](user.md) (via `userId`)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# accountUserSetting
|
|
2
|
+
|
|
3
|
+
Key: `accountId`, `userId`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `wantsWeeklyDigestMail`: boolean
|
|
8
|
+
- `timelineScaleTypeOverwrite`: string
|
|
9
|
+
- `startWeekdayOverwrite`: string
|
|
10
|
+
- `accountId`: string (foreign key ID) → account
|
|
11
|
+
- `userId`: string (foreign key ID) → user
|
|
12
|
+
- `inboxDeckId`: string (foreign key ID) → deck
|
|
13
|
+
|
|
14
|
+
## Relations
|
|
15
|
+
|
|
16
|
+
### belongsTo
|
|
17
|
+
|
|
18
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
19
|
+
- `user` → [user](user.md) (via `userId`)
|
|
20
|
+
- `inboxDeck` → [deck](deck.md) (via `inboxDeckId`)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# activeTimeTracker
|
|
2
|
+
|
|
3
|
+
Key: `id`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `id`: string
|
|
8
|
+
- `createdAt`: Date (ISO string)
|
|
9
|
+
- `cardId`: string (foreign key ID) → card
|
|
10
|
+
- `userId`: string (foreign key ID) → user
|
|
11
|
+
- `accountId`: string (foreign key ID) → account
|
|
12
|
+
|
|
13
|
+
## Relations
|
|
14
|
+
|
|
15
|
+
### belongsTo
|
|
16
|
+
|
|
17
|
+
- `card` → [card](card.md) (via `cardId`)
|
|
18
|
+
- `user` → [user](user.md) (via `userId`)
|
|
19
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# activity
|
|
2
|
+
|
|
3
|
+
Key: `id`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `id`: string
|
|
8
|
+
- `type`: string
|
|
9
|
+
- `data`: object
|
|
10
|
+
- `isRemovedFromDeckEntry`: boolean
|
|
11
|
+
- `isRemovedFromMilestoneEntry`: boolean
|
|
12
|
+
- `isRemovedFromSprintEntry`: boolean
|
|
13
|
+
- `createdAt`: Date (ISO string)
|
|
14
|
+
- `cardId`: string (foreign key ID) → card
|
|
15
|
+
- `deckId`: string (foreign key ID) → deck
|
|
16
|
+
- `projectId`: string (foreign key ID) → project
|
|
17
|
+
- `milestoneId`: string (foreign key ID) → milestone
|
|
18
|
+
- `sprintId`: string (foreign key ID) → sprint
|
|
19
|
+
- `changerId`: string (foreign key ID) → user
|
|
20
|
+
|
|
21
|
+
## Relations
|
|
22
|
+
|
|
23
|
+
### belongsTo
|
|
24
|
+
|
|
25
|
+
- `card` → [card](card.md) (via `cardId`)
|
|
26
|
+
- `deck` → [deck](deck.md) (via `deckId`)
|
|
27
|
+
- `project` → [project](project.md) (via `projectId`)
|
|
28
|
+
- `milestone` → [milestone](milestone.md) (via `milestoneId`)
|
|
29
|
+
- `sprint` → [sprint](sprint.md) (via `sprintId`)
|
|
30
|
+
- `changer` → [user](user.md) (via `changerId`)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# affiliateCode
|
|
2
|
+
|
|
3
|
+
Key: `id`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `id`: string
|
|
8
|
+
- `code`: string
|
|
9
|
+
- `vanityUrl`: string
|
|
10
|
+
- `message`: string
|
|
11
|
+
- `label`: string
|
|
12
|
+
- `isDisabled`: string
|
|
13
|
+
- `isDeleted`: string
|
|
14
|
+
- `validUntil`: string
|
|
15
|
+
- `remainingRedemptions`: string
|
|
16
|
+
- `reward`: object
|
|
17
|
+
- `createdAt`: Date (ISO string)
|
|
18
|
+
- `accountId`: string (foreign key ID) → account
|
|
19
|
+
- `creatorId`: string (foreign key ID) → user
|
|
20
|
+
|
|
21
|
+
## Relations
|
|
22
|
+
|
|
23
|
+
### belongsTo
|
|
24
|
+
|
|
25
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
26
|
+
- `creator` → [user](user.md) (via `creatorId`)
|
|
27
|
+
|
|
28
|
+
### hasMany
|
|
29
|
+
|
|
30
|
+
- `stats` → [affiliateCodeStat](affiliateCodeStat.md)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# affiliateCodeStat
|
|
2
|
+
|
|
3
|
+
Key: `affiliateCodeId`, `month`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `month`: number
|
|
8
|
+
- `year`: number
|
|
9
|
+
- `visits`: number
|
|
10
|
+
- `newVisitors`: number
|
|
11
|
+
- `signups`: number
|
|
12
|
+
- `revenue`: number
|
|
13
|
+
- `affiliateCodeId`: string (foreign key ID) → affiliateCode
|
|
14
|
+
|
|
15
|
+
## Relations
|
|
16
|
+
|
|
17
|
+
### belongsTo
|
|
18
|
+
|
|
19
|
+
- `affiliateCode` → [affiliateCode](affiliateCode.md) (via `affiliateCodeId`)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# appInstallation
|
|
2
|
+
|
|
3
|
+
Key: `id`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `id`: string
|
|
8
|
+
- `createdAt`: Date (ISO string)
|
|
9
|
+
- `accountId`: string (foreign key ID) → account
|
|
10
|
+
- `appId`: string (foreign key ID) → app
|
|
11
|
+
- `installerId`: string (foreign key ID) → user
|
|
12
|
+
|
|
13
|
+
## Relations
|
|
14
|
+
|
|
15
|
+
### belongsTo
|
|
16
|
+
|
|
17
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
18
|
+
- `app` → [app](app.md) (via `appId`)
|
|
19
|
+
- `installer` → [user](user.md) (via `installerId`)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# assigneeAssignment
|
|
2
|
+
|
|
3
|
+
Key: `assigneeId`, `assignedById`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `lastAssignedAt`: Date (ISO string)
|
|
8
|
+
- `accountId`: string (foreign key ID) → account
|
|
9
|
+
- `assigneeId`: string (foreign key ID) → user
|
|
10
|
+
- `assignedById`: string (foreign key ID) → user
|
|
11
|
+
|
|
12
|
+
## Relations
|
|
13
|
+
|
|
14
|
+
### belongsTo
|
|
15
|
+
|
|
16
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
17
|
+
- `assignee` → [user](user.md) (via `assigneeId`)
|
|
18
|
+
- `assignedBy` → [user](user.md) (via `assignedById`)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# assigneeDeckAssignment
|
|
2
|
+
|
|
3
|
+
Key: `assigneeId`, `assignedById`, `deckId`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `lastAssignedAt`: Date (ISO string)
|
|
8
|
+
- `accountId`: string (foreign key ID) → account
|
|
9
|
+
- `deckId`: string (foreign key ID) → deck
|
|
10
|
+
- `assigneeId`: string (foreign key ID) → user
|
|
11
|
+
- `assignedById`: string (foreign key ID) → user
|
|
12
|
+
|
|
13
|
+
## Relations
|
|
14
|
+
|
|
15
|
+
### belongsTo
|
|
16
|
+
|
|
17
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
18
|
+
- `deck` → [deck](deck.md) (via `deckId`)
|
|
19
|
+
- `assignee` → [user](user.md) (via `assigneeId`)
|
|
20
|
+
- `assignedBy` → [user](user.md) (via `assignedById`)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# attachment
|
|
2
|
+
|
|
3
|
+
Key: `id`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `id`: string
|
|
8
|
+
- `content`: string
|
|
9
|
+
- `title`: string
|
|
10
|
+
- `createdAt`: Date (ISO string)
|
|
11
|
+
- `fileId`: string (foreign key ID) → file
|
|
12
|
+
- `cardId`: string (foreign key ID) → card
|
|
13
|
+
- `accountId`: string (foreign key ID) → account
|
|
14
|
+
- `creatorId`: string (foreign key ID) → user
|
|
15
|
+
|
|
16
|
+
## Relations
|
|
17
|
+
|
|
18
|
+
### belongsTo
|
|
19
|
+
|
|
20
|
+
- `file` → [file](file.md) (via `fileId`)
|
|
21
|
+
- `card` → [card](card.md) (via `cardId`)
|
|
22
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
23
|
+
- `creator` → [user](user.md) (via `creatorId`)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# autoFinishedTimeTrackingSegment
|
|
2
|
+
|
|
3
|
+
Key: `userId`, `accountId`
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
- `createdAt`: Date (ISO string)
|
|
8
|
+
- `userId`: string (foreign key ID) → user
|
|
9
|
+
- `accountId`: string (foreign key ID) → account
|
|
10
|
+
- `cardId`: string (foreign key ID) → card
|
|
11
|
+
- `timeTrackingSegmentId`: string (foreign key ID) → timeTrackingSegment
|
|
12
|
+
|
|
13
|
+
## Relations
|
|
14
|
+
|
|
15
|
+
### belongsTo
|
|
16
|
+
|
|
17
|
+
- `user` → [user](user.md) (via `userId`)
|
|
18
|
+
- `account` → [account](account.md) (via `accountId`)
|
|
19
|
+
- `card` → [card](card.md) (via `cardId`)
|
|
20
|
+
- `timeTrackingSegment` → [timeTrackingSegment](timeTrackingSegment.md) (via `timeTrackingSegmentId`)
|