Skip to content

feat: move model migrate and initModel to database#9796

Merged
ZxBing0066 merged 6 commits into
developfrom
feat/migrate-model-init-model
Apr 13, 2026
Merged

feat: move model migrate and initModel to database#9796
ZxBing0066 merged 6 commits into
developfrom
feat/migrate-model-init-model

Conversation

@ZxBing0066
Copy link
Copy Markdown
Member

Changes

  • Move initModel to a new file since it should only be used in the database
  • Unify the imports of service files
  • Move some of the legacy model APIs to insomnia-data

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 10, 2026

✅ Circular References Report

Generated at: 2026-04-13T06:15:56.382Z
Status: ✅ NO CHANGE

Summary

Metric Base (develop) PR Change
Total Circular References 20 20 0 (0.00%)
Click to view all circular references in PR (20)
insomnia-inso/src/db/models/types.ts -> insomnia-inso/src/db/types.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts -> insomnia/src/require-interceptor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/concurrency.ts
insomnia/src/network/authentication.ts -> insomnia/src/network/o-auth-2/get-token.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts -> insomnia/src/templating/index.ts -> insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/network/network.ts -> insomnia/src/network/authentication.ts -> insomnia/src/network/o-auth-2/get-token.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/store.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/misc.ts
insomnia/src/templating/base-extension-worker.ts -> insomnia/src/templating/worker.ts
insomnia/src/templating/index.ts -> insomnia/src/templating/base-extension.ts
insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/templating/types.ts -> insomnia/src/templating/utils.ts
insomnia/src/ui/components/settings/import-export.tsx -> insomnia/src/ui/components/modals/export-requests-modal.tsx
insomnia/src/ui/components/tabs/tab-list.tsx -> insomnia/src/ui/components/tabs/tab.tsx
insomnia/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> insomnia/src/ui/components/templating/external-vault/external-vault-form.tsx
insomnia/src/ui/components/viewers/response-viewer.tsx -> insomnia/src/ui/components/viewers/response-multipart-viewer.tsx
Click to view all circular references in base branch (20)
insomnia-inso/src/db/models/types.ts -> insomnia-inso/src/db/types.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/cancellation.ts -> insomnia/src/script-executor.ts -> insomnia/src/require-interceptor.ts
insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts -> insomnia/src/network/network.ts -> insomnia/src/network/concurrency.ts
insomnia/src/network/authentication.ts -> insomnia/src/network/o-auth-2/get-token.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts -> insomnia/src/templating/index.ts -> insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/network/network.ts -> insomnia/src/network/authentication.ts -> insomnia/src/network/o-auth-2/get-token.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/context/app.ts -> insomnia/src/templating/types.ts -> insomnia/src/plugins/context/store.ts
insomnia/src/plugins/index.ts -> insomnia/src/plugins/misc.ts
insomnia/src/templating/base-extension-worker.ts -> insomnia/src/templating/worker.ts
insomnia/src/templating/index.ts -> insomnia/src/templating/base-extension.ts
insomnia/src/templating/types.ts -> insomnia/src/plugins/context/network.ts
insomnia/src/templating/types.ts -> insomnia/src/templating/utils.ts
insomnia/src/ui/components/settings/import-export.tsx -> insomnia/src/ui/components/modals/export-requests-modal.tsx
insomnia/src/ui/components/tabs/tab-list.tsx -> insomnia/src/ui/components/tabs/tab.tsx
insomnia/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> insomnia/src/ui/components/templating/external-vault/external-vault-form.tsx
insomnia/src/ui/components/viewers/response-viewer.tsx -> insomnia/src/ui/components/viewers/response-multipart-viewer.tsx

Analysis

No Change: This PR does not introduce or remove any circular references.


This report was generated automatically by comparing against the develop branch.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors Insomnia’s data-layer boundaries by moving model initialization/migration logic into the insomnia-data database layer, and updating app code/tests to prefer ~/insomnia-data models/services imports over legacy ~/models init APIs.

Changes:

  • Move initModel and several legacy per-model migrate() implementations into packages/insomnia/src/insomnia-data/node-src/database/init-model/*.
  • Rework insomnia-data model exports (introducing db-models.ts and exporting models as a namespace) and update downstream imports/usages.
  • Update various services/tests to use services.*.create() instead of models.initModel() where applicable.

Reviewed changes

Copilot reviewed 57 out of 57 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
packages/insomnia/src/sync/vcs/pull-backend-project.ts Switches workspace creation from legacy initModel usage to services.workspace.create() while pulling backend projects.
packages/insomnia/src/plugins/context/tests/response.test.ts Updates response construction in tests to use services.response.create().
packages/insomnia/src/network/o-auth-2/get-token.ts Replaces ephemeral request construction with services.request.create() during OAuth token exchange.
packages/insomnia/src/models/index.ts Removes legacy initModel/manual all() list in favor of ~/insomnia-data model exports.
packages/insomnia/src/models/tests/request.test.ts Unifies request type imports to come from ~/insomnia-data.
packages/insomnia/src/insomnia-data/src/models/workspace.ts Removes migration logic from the model module.
packages/insomnia/src/insomnia-data/src/models/settings.ts Removes settings migration logic from the model module.
packages/insomnia/src/insomnia-data/src/models/response.ts Removes response migration logic from the model module.
packages/insomnia/src/insomnia-data/src/models/request.ts Removes request migration logic from the model module.
packages/insomnia/src/insomnia-data/src/models/index.ts Changes model export structure; adds all()/types() based on db-models.
packages/insomnia/src/insomnia-data/src/models/db-models.ts New barrel exporting only DB-backed model modules.
packages/insomnia/src/insomnia-data/src/models/cookie-jar.ts Removes cookie-jar migration logic from the model module.
packages/insomnia/src/insomnia-data/src/index.ts Exports models as a namespace (export * as models).
packages/insomnia/src/insomnia-data/node-src/services/workspace.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/workspace-meta.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/websocket-response.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/websocket-request.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/websocket-payload.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/user-session.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/unit-test.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/unit-test-suite.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/unit-test-result.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/stats.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/socket-io-response.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/socket-io-request.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/socket-io-payload.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/runner-test-result.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/proto-file.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/proto-directory.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/project.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/plugin-data.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/o-auth-2-token.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/mock-server.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/mock-route.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/mcp-response.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/mcp-request.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/mcp-payload.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/grpc-request.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/grpc-request-meta.ts Unifies imports and sources isGrpcRequestId from models.grpcRequest.
packages/insomnia/src/insomnia-data/node-src/services/git-repository.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/git-credentials.ts Simplifies imports; uses ~/insomnia-data for db/models.
packages/insomnia/src/insomnia-data/node-src/services/environment.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/cookie-jar.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/cloud-credential.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/client-certificate.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/ca-certificate.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/services/api-spec.ts Unifies imports to use ~/insomnia-data exports.
packages/insomnia/src/insomnia-data/node-src/database/init-model/workspace.ts New workspace migration module extracted from model layer.
packages/insomnia/src/insomnia-data/node-src/database/init-model/workspace.test.ts Updates tests to call the new workspace migration entrypoint.
packages/insomnia/src/insomnia-data/node-src/database/init-model/settings.ts New settings migration module extracted from model layer.
packages/insomnia/src/insomnia-data/node-src/database/init-model/response.ts New response migration module extracted from model layer.
packages/insomnia/src/insomnia-data/node-src/database/init-model/response.test.ts Updates tests to use new initModel entrypoint.
packages/insomnia/src/insomnia-data/node-src/database/init-model/request.ts New request migration module extracted from model layer.
packages/insomnia/src/insomnia-data/node-src/database/init-model/index.ts New centralized initModel responsible for defaults, pruning, and calling migrations.
packages/insomnia/src/insomnia-data/node-src/database/init-model/cookie-jar.ts New cookie-jar migration module extracted from model layer.
packages/insomnia/src/insomnia-data/node-src/database/database.test.ts Updates tests to reflect buffered change callback typing and new migration import.
packages/insomnia/src/insomnia-data/node-src/database/database-nedb.ts Switches DB init/migration path to use the new init-model implementation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/insomnia/src/network/o-auth-2/get-token.ts Outdated
Comment thread packages/insomnia/src/sync/vcs/pull-backend-project.ts
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 57 out of 57 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (2)

packages/insomnia/src/insomnia-data/node-src/database/init-model/workspace.test.ts:79

  • These test fixtures intentionally set legacy/invalid scope values ('spec', 'debug', null, 'something'), but services.workspace.create is typed as Partial<Workspace> where scope is only 'design' | 'collection' | 'mock-server' | 'environment' | 'mcp'. This will fail TypeScript compilation unless you re-add // @ts-expect-error (or cast the patch) for these cases.
    packages/insomnia/src/sync/vcs/pull-backend-project.ts:38
  • services.workspace.create(...) already persists the workspace via db.docCreate. Calling database.update(workspace) immediately after is redundant and triggers an extra write/change event. Consider removing the database.update call here and just return the created workspace (or switch back to a pure initializer if you don’t want persistence at this point).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

scope: 'collection',
modified: Date.now(),
created: Date.now(),
isPrivate: false,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this field useful here?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's using the update API, and these fields are necessary. I think the API is not reasonable, but I don't want to make any changes to the business code.

if (defaultBranchMissing) {
const workspace = await models.initModel<Workspace>(models.workspace.type, {
const workspace = await database.update<Workspace>({
...models.workspace.init(),
Copy link
Copy Markdown
Member

@CurryYangxx CurryYangxx Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest we don't call model.init() directly outside the initModel function, because we need to add these model-unrelated fields like modified/created manually. It's easy to miss some of these fields.

Comment on lines +437 to +456
const newRequest: Request = {
...models.request.init(),
// Do not inherit authentication from parent request or group since this is a special request
authentication: {
type: 'none',
disabled: false,
},
{
_id: requestOrGroupId + '.other',
parentId: requestOrGroupId,
headers: [...defaultHeaders, ...headers],
url: setDefaultProtocol(authentication.accessTokenUrl),
method: 'POST',
body: {
mimeType: 'application/x-www-form-urlencoded',
params,
},
);
_id: requestOrGroupId + '.other',
parentId: requestOrGroupId,
type: models.request.type,
modified: Date.now(),
created: Date.now(),
};
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

@ZxBing0066 ZxBing0066 merged commit c8292c6 into develop Apr 13, 2026
16 checks passed
@ZxBing0066 ZxBing0066 deleted the feat/migrate-model-init-model branch April 13, 2026 06:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants