@yuebai008/cli
Version:
Command line interface for rapid qg-minigame development
1 lines • 2.4 kB
JavaScript
import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";const UIStrings={databaseNoLongerHasExpected:"Database no longer has expected version.",anUnexpectedErrorSOccurred:"An unexpected error {PH1} occurred."},str_=i18n.i18n.registerUIStrings("panels/application/DatabaseModel.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class Database{model;idInternal;domainInternal;nameInternal;versionInternal;constructor(e,a,t,s,n){this.model=e,this.idInternal=a,this.domainInternal=t,this.nameInternal=s,this.versionInternal=n}get id(){return this.idInternal}get name(){return this.nameInternal}set name(e){this.nameInternal=e}get version(){return this.versionInternal}set version(e){this.versionInternal=e}get domain(){return this.domainInternal}set domain(e){this.domainInternal=e}async tableNames(){const{tableNames:e}=await this.model.agent.invoke_getDatabaseTableNames({databaseId:this.idInternal})||[];return e.sort()}async executeSql(e,a,t){const s=await this.model.agent.invoke_executeSQL({databaseId:this.idInternal,query:e}),n=s.getError()||null;if(n)return void t(n);const r=s.sqlError;if(!r)return void a(s.columnNames||[],s.values||[]);let i;i=r.message?r.message:2===r.code?i18nString(UIStrings.databaseNoLongerHasExpected):i18nString(UIStrings.anUnexpectedErrorSOccurred,{PH1:r.code}),t(i)}}export class DatabaseModel extends SDK.SDKModel.SDKModel{databasesInternal;agent;enabled;constructor(e){super(e),this.databasesInternal=[],this.agent=e.databaseAgent(),this.target().registerDatabaseDispatcher(new DatabaseDispatcher(this))}enable(){this.enabled||(this.agent.invoke_enable(),this.enabled=!0)}disable(){this.enabled&&(this.enabled=!1,this.databasesInternal=[],this.agent.invoke_disable(),this.dispatchEventToListeners(Events.DatabasesRemoved))}databases(){const e=[];for(const a of this.databasesInternal)e.push(a);return e}addDatabase(e){this.databasesInternal.push(e),this.dispatchEventToListeners(Events.DatabaseAdded,e)}}SDK.SDKModel.SDKModel.register(DatabaseModel,{capabilities:SDK.Target.Capability.DOM,autostart:!1});export var Events;!function(e){e.DatabaseAdded="DatabaseAdded",e.DatabasesRemoved="DatabasesRemoved"}(Events||(Events={}));export class DatabaseDispatcher{model;constructor(e){this.model=e}addDatabase({database:e}){this.model.addDatabase(new Database(this.model,e.id,e.domain,e.name,e.version))}}