@h3ravel/database 11.2.7 → 11.3.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ConsoleCommand","Migrate","Logger","FileSystem","path","MigrationCreator","Resolver","config","BaseModel","ServiceProvider","config"],"sources":["../src/Commands/MigrateCommand.ts","../src/Configuration.ts","../src/Model.ts","../src/Providers/DatabaseServiceProvider.ts"],"sourcesContent":["import { FileSystem, Logger, Resolver } from '@h3ravel/shared'\nimport { Migrate, MigrationCreator } from '@h3ravel/arquebus/migrations'\nimport { TBaseConfig, arquebusConfig } from '..'\n\nimport { ConsoleCommand } from '@h3ravel/core'\nimport path from 'node:path'\n\nexport class MigrateCommand extends ConsoleCommand {\n /**\n * The current database connection\n */\n private connection!: TBaseConfig\n\n /** \n * The base path for all database operations\n */\n private databasePath: string = database_path()\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `migrate:\n {fresh : Drop all tables and re-run all migrations.}\n {install : Create the migration repository.}\n {refresh : Reset and re-run all migrations.}\n {reset : Rollback all database migrations.}\n {rollback : Rollback the last database migration.}\n {status : Show the status of each migration.}\n {publish : Publish any migration files from installed packages. | {package : The package to publish migrations from}}\n {^--s|seed : Seed the database}\n {^--c|connection=mysql : The database connection to use}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Run all pending migrations.'\n\n /**\n * Execute the console command.\n */\n public async handle (this: any) {\n const command = (this.dictionary.name ?? this.dictionary.baseCommand) as never\n\n this.connection = Object.entries(arquebusConfig(config('database')))\n .find(([client]) => client === config('database.default'))\n ?.at(1)\n\n this.connection.migrations = {\n path: 'migrations',\n table: 'migrations',\n }\n\n const methods = {\n migrate: 'migrateRun',\n fresh: 'migrateFresh',\n install: 'migrateInstall',\n refresh: 'migrateRefresh',\n reset: 'migrateReset',\n rollback: 'migrateRollback',\n status: 'migrateStatus',\n publish: 'migratePublish',\n } as const\n\n await this[methods[command]]()\n }\n\n /**\n * Run all pending migrations.\n */\n protected async migrateRun () {\n try {\n await new Migrate(this.databasePath).run(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Drop all tables and re-run all migrations.\n */\n protected async migrateFresh () {\n try {\n await new Migrate(this.databasePath).fresh(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Create the migration repository.\n */\n protected async migrateInstall () {\n try {\n const migrate = new Migrate(this.databasePath)\n const { migrator } = await migrate.setupConnection(this.connection)\n await migrate.prepareDatabase(migrator)\n\n Logger.success('Migration repository installed.')\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Reset and re-run all migrations.\n */\n protected async migrateRefresh () {\n try {\n await new Migrate(this.databasePath).refresh(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Rollback all database migrations.\n */\n protected async migrateReset () {\n try {\n await new Migrate(this.databasePath).reset(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Rollback the last database migration.\n */\n protected async migrateRollback () {\n try {\n await new Migrate(this.databasePath).rollback(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Show the status of each migration.\n */\n protected async migrateStatus () {\n const migrations = await new Migrate(this.databasePath, undefined, (msg, sts) => {\n const hint = Logger.parse([\n [' Did you forget to run', 'white'],\n ['`musket migrate:install`?', 'grey']\n ], ' ', false)\n\n if (sts) Logger[sts](msg + hint, sts === 'error', true)\n }).status(this.connection, this.options(), true)\n\n try {\n if (migrations.length > 0) {\n Logger.twoColumnLog('Migration name', 'Batch / Status')\n\n migrations.forEach(migration => {\n const status = migration.ran\n ? Logger.parse([[`[${migration.batch}]`, 'white'], ['Ran', 'green']], ' ', false)\n : Logger.parse([['Pending', 'yellow']], '', false)\n Logger.twoColumnLog(migration.name, status)\n })\n }\n else {\n Logger.info('No migrations found')\n }\n } catch (e) {\n Logger.error(['ERROR: ' + e, 'Did you run musket migrate:install'])\n }\n }\n\n\n\n /**\n * Publish any migration files from installed packages.\n */\n protected async migratePublish () {\n const name = this.argument('package')\n\n try {\n /** Find the requested package */\n const packagePath = FileSystem.findModulePkg(name) ?? null\n if (!packagePath) throw new Error('Package not found')\n\n /** Get the package,json and instanciate the migration creator */\n const pkgJson = (await import(path.join(packagePath, 'package.json')))\n const creator = new MigrationCreator(path.join(packagePath, pkgJson.migrations ?? 'migrations'))\n\n const info = Logger.parse([\n [' Publishing migrations from', 'white'],\n [`${pkgJson.name}@${pkgJson.version}`, ['italic', 'gray']]\n ], ' ', false)\n\n Logger.info(`INFO: ${info}`)\n\n try {\n /** Publish any existing migrations */\n await creator.publish(this.databasePath, (fileName) => {\n Logger.twoColumnLog(fileName, Logger.parse([['PUBLISHED', 'green']], '', false))\n })\n } catch {\n Logger.error([`ERROR: ${name} has no publishable migrations.`])\n }\n } catch (e) {\n const hint = Logger.parse([\n [' Did you forget to run', 'white'],\n [`\\`${await Resolver.getPakageInstallCommand(name)}\\``, 'grey']\n ], ' ', false)\n\n const error = Logger.parse([\n ['Package `', 'white'],\n [name, 'grey'],\n ['` not found', 'white']\n ], '', false)\n\n Logger.error(['ERROR: ' + error, hint + '?', String(e)])\n }\n }\n}\n","/// <reference path=\"../../core/src/app.globals.d.ts\" />\nimport { Knex } from 'knex'\n\ntype TFunction = (...args: any[]) => any\n\nexport interface TField {\n type: 'VAR_STRING' | 'BLOB' | 'DATETIME' | 'TIMESTAMP' | 'LONG' | 'JSON'\n length: number\n db: string\n table: string\n name: string\n string: TFunction,\n buffer: TFunction\n geometry: TFunction\n}\n\nexport interface TBaseConfig {\n client: 'mysql' | 'mysql2' | 'sqlite3' | 'oracle' | 'mariadb' | 'pg'\n connection: {\n typeCast?(field: TField, next: TFunction): any\n dateStrings?: boolean\n }\n pool?: {\n afterCreate: (connection: TConfig, callback: (val: any, con: any) => void) => Promise<any>\n } | undefined\n connections?: Record<string, TConfig>\n migrations?: {\n table: string\n path: string\n },\n factories?: {\n path: string\n },\n seeders?: {\n path: string\n },\n models?: {\n path: string\n }\n}\n\nexport type TConfig = TBaseConfig & ({\n client: 'pg'\n connection: Knex.PgConnectionConfig\n} | {\n client: 'oracle'\n connection: Knex.OracleDbConnectionConfig\n} | {\n client: 'mysql2'\n connection: Knex.MySql2ConnectionConfig\n} | {\n client: 'mysql'\n connection: Knex.MySqlConnectionConfig\n} | {\n client: 'sqlite3'\n connection: Knex.Sqlite3ConnectionConfig\n useNullAsDefault?: boolean\n} | {\n client: 'mariadb'\n connection: Knex.MariaSqlConnectionConfig\n useNullAsDefault?: boolean\n})\n\nexport const arquebusConfig = (config: any) => {\n return {\n sqlite: {\n client: config.connections.sqlite.driver,\n connection: <Knex.Sqlite3ConnectionConfig>{\n filename: database_path(config.connections.sqlite.database),\n debug: config.connections.sqlite.debug,\n flags: config.connections.sqlite.flags,\n options: config.connections.sqlite.options,\n expirationChecker: config.connections.sqlite.expirationChecker\n },\n useNullAsDefault: config.connections.sqlite.useNullAsDefault,\n },\n mysql: {\n client: config.connections.mysql.driver,\n connection: <Knex.MySql2ConnectionConfig>{\n host: config.connections.mysql.host ?? 'localhost',\n port: config.connections.mysql.port ?? 3306,\n user: config.connections.mysql.username ?? 'root',\n password: config.connections.mysql.password,\n database: config.connections.mysql.database,\n charset: config.connections.mysql.charset,\n socketPath: config.connections.mysql.unix_socket,\n localAddress: config.connections.mysql.url,\n },\n },\n mariadb: {\n client: config.connections.mariadb.driver,\n connection: <Knex.MariaSqlConnectionConfig>{\n host: config.connections.mariadb.host ?? 'localhost',\n port: config.connections.mariadb.port ?? 3306,\n user: config.connections.mariadb.username ?? 'root',\n password: config.connections.mariadb.password,\n database: config.connections.mariadb.database,\n charset: config.connections.mariadb.charset,\n socketPath: config.connections.mariadb.unix_socket,\n localAddress: config.connections.mariadb.url,\n expirationChecker: config.connections.mariadb.expirationChecker\n },\n },\n pgsql: {\n client: 'pg',\n connection: <Knex.PgConnectionConfig>{\n host: config.connections.pgsql.host ?? 'localhost',\n port: config.connections.pgsql.port ?? 3306,\n user: config.connections.pgsql.username ?? 'root',\n password: config.connections.pgsql.password,\n database: config.connections.pgsql.database,\n charset: config.connections.mysql.charset,\n connectionString: config.connections.pgsql.url,\n expirationChecker: config.connections.pgsql.expirationChecker\n },\n }\n } as unknown as TBaseConfig\n}\n","import { Model as BaseModel } from '@h3ravel/arquebus'\n\nexport class Model<M extends BaseModel = any> extends BaseModel {\n /**\n * Retrieve the model for a bound value.\n * \n * @param {any} value \n * @param {String|null} field \n * @returns \n */\n public resolveRouteBinding (value: any, field: undefined | string | null = null): Promise<M> {\n return this.newQuery().where(field ?? 'ids', value).firstOrFail()! as Promise<M>\n }\n}\n","import { MigrateCommand } from '../Commands/MigrateCommand'\nimport { ServiceProvider } from '@h3ravel/core'\nimport { arquebus } from '@h3ravel/arquebus'\nimport { arquebusConfig } from '../Configuration'\n\n/**\n * Database connection, ORM, migrations.\n * \n * Register DatabaseManager and QueryBuilder if required.\n * Set up ORM models and relationships.\n * Register migration and seeder commands.\n * \n */\nexport class DatabaseServiceProvider extends ServiceProvider {\n public static priority = 994\n\n register () {\n const config = this.app.make('config')\n\n const connection = Object.entries(arquebusConfig(config.get('database')))\n .find(([client]) => client === config.get('database.default'))\n ?.at(1)\n\n if (connection) {\n arquebus.addConnection(connection)\n }\n\n /** Register Musket Commands */\n this.commands([MigrateCommand])\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["e","n","t","r","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","c","h","ConsoleCommand","path","FileSystem","npath","Logger","Str","stub: string","ConsoleCommand","Migrate","Logger","FileSystem","path","MigrationCreator","Resolver","ConsoleCommand","path","npath","FileSystem","Str","Logger","config","BaseModel","ServiceProvider","config","arquebus","BaseSeeder","app: Application","command?: SeedCommand","Arr","TaskManager"],"sources":["../src/Utils/TableGuesser.ts","../../../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js","../src/Commands/MakeCommand.ts","../src/Commands/MigrateCommand.ts","../src/Commands/SeedCommand.ts","../src/Configuration.ts","../src/Model.ts","../src/Providers/DatabaseServiceProvider.ts","../src/Query/DB.ts","../src/Seeder.ts"],"sourcesContent":["export class TableGuesser {\n static CREATE_PATTERNS = [\n /^create_(\\w+)_table$/,\n /^create_(\\w+)$/\n ]\n static CHANGE_PATTERNS = [\n /.+_(to|from|in)_(\\w+)_table$/,\n /.+_(to|from|in)_(\\w+)$/\n ]\n static guess (migration: string) {\n for (const pattern of TableGuesser.CREATE_PATTERNS) {\n const matches = migration.match(pattern)\n if (matches) {\n return [matches[1], true]\n }\n }\n for (const pattern of TableGuesser.CHANGE_PATTERNS) {\n const matches = migration.match(pattern)\n if (matches) {\n return [matches[2], false]\n }\n }\n return []\n }\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import { FileSystem, Logger } from '@h3ravel/shared'\nimport { mkdir, readFile, writeFile } from 'node:fs/promises'\n\nimport { ConsoleCommand } from '@h3ravel/core'\nimport { Str } from '@h3ravel/support'\nimport { TableGuesser } from '../Utils/TableGuesser'\nimport dayjs from 'dayjs'\nimport npath from 'node:path'\n\nexport class MakeCommand extends ConsoleCommand {\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `#make:\n {migration : Generates a new database migration class. \n | {--t|table : The table to migrate} \n | {--c|create : The table to be created} \n | {--l|type=ts : The file type to generate} \n } \n {factory : Create a new model factory.\n | {--force : Create the factory even if it already exists}\n | {--l|type=ts : The file type to generate}\n }\n {seeder : Create a new seeder class.\n | {--force : Create the seeder even if it already exists}\n | {--l|type=ts : The file type to generate}\n }\n {model : Create a new Eloquent model class. \n | {--api : Indicates if the generated controller should be an API resource controller} \n | {--c|controller : Create a new controller for the model} \n | {--f|factory : Create a new factory for the model} \n | {--m|migration : Create a new migration file for the model} \n | {--r|resource : Indicates if the generated controller should be a resource controller} \n | {--a|all : Generate a migration, seeder, factory, policy, resource controller, and form request classes for the model} \n | {--s|seed : Create a new seeder for the model}\n | {--l|type=ts : The file type to generate}\n | {--force : Create the model even if it already exists}\n } \n {^name : The name of the [name] to generate}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Generate component classes'\n\n public async handle (this: any) {\n const command = (this.dictionary.baseCommand ?? this.dictionary.name) as never\n\n if (!this.argument('name')) {\n this.program.error('Please provide a valid name for the ' + command)\n }\n\n const methods = {\n migration: 'makeMigration', // ✓\n factory: 'makeFactory',\n seeder: 'makeSeeder', // ✓\n model: 'makeModel', // ✓\n } as const\n\n console.log('')\n\n await this[methods[command]]()\n }\n\n /**\n * Generate a new database migration class\n */\n protected async makeMigration () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const datePrefix = dayjs().format('YYYY_MM_DD_HHmmss')\n const path = database_path(`migrations/${datePrefix}_${name}.${type}`)\n\n const dbPkgPath = FileSystem.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n\n let create = this.option('create', false)\n let table = this.option('table')\n if (!table && typeof create === 'string') {\n table = create\n create = true\n }\n\n if (!table) {\n const guessed = TableGuesser.guess(name)\n table = guessed[0]\n create = !!guessed[1]\n }\n\n const stubPath = npath.join(dbPkgPath, this.getStubName('migration', type, { table, create }))\n let stub = await readFile(stubPath, 'utf-8')\n\n if (table !== null) {\n stub = stub.replace(/DummyTable|{{\\s*table\\s*}}/g, table)\n }\n\n Logger.info('INFO: Creating Migration')\n\n await this.kernel.ensureDirectoryExists(npath.dirname(path))\n await writeFile(path, stub)\n\n Logger.split('INFO: Migration Created', Logger.log(npath.basename(path), 'gray', false))\n }\n\n /**\n * Create a new model factory\n */\n protected makeFactory () {\n Logger.success('Factory support is not yet available')\n }\n\n /**\n * Create a new seeder class\n */\n protected async makeSeeder () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const force = this.option('force')\n const path = database_path(`seeders/${Str.snake(name)}.${type}`)\n\n /** Check if the model already exists */\n if (!force && await FileSystem.fileExists(path)) {\n Logger.error(`ERORR: ${name} already exists`)\n }\n\n const dbPkgPath = FileSystem.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n const stubPath = npath.join(dbPkgPath, this.getStubName('seeder', type))\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n\n Logger.info(\n `INFO: Seeder ${Logger.log(`[${npath.relative(process.cwd(), path)}]`, 'bold', false)} created successfully.`\n )\n }\n\n /**\n * Generate a new Arquebus model class\n */\n protected async makeModel () {\n const type = this.option('type', 'ts')\n const name = this.argument('name')\n const force = this.option('force')\n\n const path = app_path(`Models/${Str.lower(name)}.${type}`)\n\n /** The model is scoped to a path make sure to create the associated directories */\n if (name.includes('/')) {\n await mkdir(Str.beforeLast(path, '/'), { recursive: true })\n }\n\n /** Check if the model already exists */\n if (!force && await FileSystem.fileExists(path)) {\n Logger.error(`ERORR: ${name} model already exists`)\n }\n\n const dbPkgPath = FileSystem.findModulePkg('@h3ravel/database', this.kernel.cwd) ?? ''\n const stubPath = npath.join(dbPkgPath, `dist/stubs/model-${type}.stub`)\n\n let stub = await readFile(stubPath, 'utf-8')\n stub = stub.replace(/{{ name }}/g, name)\n\n await writeFile(path, stub)\n\n Logger.info(\n `INFO: Model ${Logger.log(`[${npath.relative(process.cwd(), path)}]`, 'bold', false)} created successfully.`\n )\n }\n\n /**\n * Ge the database migration file name\n * \n * @param table \n * @param create \n * @param type \n * @returns \n */\n getStubName (\n type: 'migration' | 'seeder' | 'model' | 'factory',\n ext: 'ts' | 'js' = 'ts',\n { table, create }: { table?: string, create?: boolean } = {}\n ) {\n let stub: string\n if (type === 'migration') {\n if (!table) {\n stub = `migration-${ext}.stub`\n }\n else if (create) {\n stub = `migration.create-${ext}.stub`\n }\n else {\n stub = `migration.update-${ext}.stub`\n }\n return 'dist/stubs/' + stub\n } else {\n return `dist/stubs/${type}-${ext}.stub`\n }\n }\n}\n","import { FileSystem, Logger, Resolver } from '@h3ravel/shared'\nimport { Migrate, MigrationCreator } from '@h3ravel/arquebus/migrations'\nimport { TBaseConfig, arquebusConfig } from '..'\n\nimport { ConsoleCommand } from '@h3ravel/core'\nimport path from 'node:path'\n\nexport class MigrateCommand extends ConsoleCommand {\n /**\n * The current database connection\n */\n private connection!: TBaseConfig\n\n /** \n * The base path for all database operations\n */\n private databasePath: string = database_path()\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `migrate:\n {fresh : Drop all tables and re-run all migrations.}\n {install : Create the migration repository.}\n {refresh : Reset and re-run all migrations.}\n {reset : Rollback all database migrations.}\n {rollback : Rollback the last database migration.}\n {status : Show the status of each migration.}\n {publish : Publish any migration files from installed packages. | {package : The package to publish migrations from}}\n {^--s|seed : Seed the database}\n {^--c|connection=mysql : The database connection to use}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Run all pending migrations.'\n\n /**\n * Execute the console command.\n */\n public async handle (this: any) {\n const command = (this.dictionary.name ?? this.dictionary.baseCommand) as never\n\n this.connection = Object.entries(arquebusConfig(config('database')))\n .find(([client]) => client === config('database.default'))\n ?.at(1)\n\n this.connection.migrations = {\n path: 'migrations',\n table: 'migrations',\n }\n\n const methods = {\n migrate: 'migrateRun',\n fresh: 'migrateFresh',\n install: 'migrateInstall',\n refresh: 'migrateRefresh',\n reset: 'migrateReset',\n rollback: 'migrateRollback',\n status: 'migrateStatus',\n publish: 'migratePublish',\n } as const\n\n await this[methods[command]]()\n }\n\n /**\n * Run all pending migrations.\n */\n protected async migrateRun () {\n try {\n await new Migrate(this.databasePath).run(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Drop all tables and re-run all migrations.\n */\n protected async migrateFresh () {\n try {\n await new Migrate(this.databasePath).fresh(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Create the migration repository.\n */\n protected async migrateInstall () {\n try {\n const migrate = new Migrate(this.databasePath)\n const { migrator } = await migrate.setupConnection(this.connection)\n await migrate.prepareDatabase(migrator)\n\n Logger.success('Migration repository installed.')\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Reset and re-run all migrations.\n */\n protected async migrateRefresh () {\n try {\n await new Migrate(this.databasePath).refresh(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Rollback all database migrations.\n */\n protected async migrateReset () {\n try {\n await new Migrate(this.databasePath).reset(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Rollback the last database migration.\n */\n protected async migrateRollback () {\n try {\n await new Migrate(this.databasePath).rollback(this.connection, this.options(), true)\n } catch (e) {\n Logger.error('ERROR: ' + e)\n }\n }\n\n /**\n * Show the status of each migration.\n */\n protected async migrateStatus () {\n const migrations = await new Migrate(this.databasePath, undefined, (msg, sts) => {\n const hint = Logger.parse([\n [' Did you forget to run', 'white'],\n ['`musket migrate:install`?', 'grey']\n ], ' ', false)\n\n if (sts) Logger[sts](msg + hint, sts === 'error', true)\n }).status(this.connection, this.options(), true)\n\n try {\n if (migrations.length > 0) {\n Logger.twoColumnDetail('Migration name', 'Batch / Status')\n\n migrations.forEach(migration => {\n const status = migration.ran\n ? Logger.parse([[`[${migration.batch}]`, 'white'], ['Ran', 'green']], ' ', false)\n : Logger.parse([['Pending', 'yellow']], '', false)\n Logger.twoColumnDetail(migration.name, status)\n })\n }\n else {\n Logger.info('No migrations found')\n }\n } catch (e) {\n Logger.error(['ERROR: ' + e, 'Did you run musket migrate:install'])\n }\n }\n\n\n\n /**\n * Publish any migration files from installed packages.\n */\n protected async migratePublish () {\n const name = this.argument('package')\n\n try {\n /** Find the requested package */\n const packagePath = FileSystem.findModulePkg(name) ?? null\n if (!packagePath) throw new Error('Package not found')\n\n /** Get the package,json and instanciate the migration creator */\n const pkgJson = (await import(path.join(packagePath, 'package.json')))\n const creator = new MigrationCreator(path.join(packagePath, pkgJson.migrations ?? 'migrations'))\n\n const info = Logger.parse([\n [' Publishing migrations from', 'white'],\n [`${pkgJson.name}@${pkgJson.version}`, ['italic', 'gray']]\n ], ' ', false)\n\n Logger.info(`INFO: ${info}`)\n\n try {\n /** Publish any existing migrations */\n await creator.publish(this.databasePath, (fileName) => {\n Logger.twoColumnDetail(fileName, Logger.parse([['PUBLISHED', 'green']], '', false))\n })\n } catch {\n Logger.error([`ERROR: ${name} has no publishable migrations.`])\n }\n } catch (e) {\n const hint = Logger.parse([\n [' Did you forget to run', 'white'],\n [`\\`${await Resolver.getPakageInstallCommand(name)}\\``, 'grey']\n ], ' ', false)\n\n const error = Logger.parse([\n ['Package `', 'white'],\n [name, 'grey'],\n ['` not found', 'white']\n ], '', false)\n\n Logger.error(['ERROR: ' + error, hint + '?', String(e)])\n }\n }\n}\n","import { FileSystem, Logger } from '@h3ravel/shared'\n\nimport { ConsoleCommand } from '@h3ravel/core'\nimport { DB } from '..'\nimport type { QueryBuilder } from '@h3ravel/arquebus'\nimport { Str } from '@h3ravel/support'\nimport npath from 'node:path'\n\nexport class SeedCommand extends ConsoleCommand {\n /**\n * The current query builder instance\n */\n public queryBuilder!: QueryBuilder\n\n /**\n * The current database connection name\n */\n private connection!: string\n\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected signature: string = `db:seed\n {--class=DatabaseSeeder : The file name of the root seeder}\n {--d|database? : The database connection to use}\n {--force : Force the operation to run when in production}\n `\n /**\n * The console command description.\n *\n * @var string\n */\n protected description: string = 'Seed the database with records.'\n\n /**\n * Execute the console command.\n */\n public async handle () {\n const file = this.option('class')\n const force = this.option('force')\n const database = this.option('database')\n\n console.log('')\n\n if (env('APP_ENV') === 'production' && !force) {\n Logger.error('INFO: Unable to run seeders, your app is currently in production.')\n }\n\n this.connection = database ?? config('database.default')\n this.queryBuilder = DB.instance(this.connection)\n\n if (!this.connection) {\n Logger.error('ERROR: Unknown database connection.')\n }\n\n let path = npath.join(process.cwd(), file)\n\n const [f1, f2] = [\n FileSystem.resolveFileUp(Str.snake(file), ['js', 'ts'], database_path('seeders')),\n FileSystem.resolveFileUp(Str.studly(file), ['js', 'ts'], database_path('seeders')),\n ]\n\n if (!f1 && !f2) {\n /**\n * Try to find the path assuming it's relative to cwd\n */\n if (!await FileSystem.fileExists(path)) {\n path = database_path(npath.join('seeders', file))\n }\n\n /**\n * Now try to find the path knowing it's relative to database_path\n */\n if (!await FileSystem.fileExists(path)) {\n Logger.error(`ERROR: Seeder ${Logger.log(`[${file}]`, 'bold', false)} not found.`)\n }\n } else {\n path = String(f1 ?? f2)\n }\n\n const { default: seeder } = (await import(path))\n\n if (seeder) {\n Logger.info('INFO: Seeding database.')\n\n await new seeder(this.app, this).run(this.queryBuilder)\n }\n }\n}\n","/// <reference path=\"../../core/src/app.globals.d.ts\" />\nimport { Knex } from 'knex'\n\ntype TFunction = (...args: any[]) => any\n\nexport interface TField {\n type: 'VAR_STRING' | 'BLOB' | 'DATETIME' | 'TIMESTAMP' | 'LONG' | 'JSON'\n length: number\n db: string\n table: string\n name: string\n string: TFunction,\n buffer: TFunction\n geometry: TFunction\n}\n\nexport interface TBaseConfig {\n client: 'mysql' | 'mysql2' | 'sqlite3' | 'oracle' | 'mariadb' | 'pg'\n connection: {\n typeCast?(field: TField, next: TFunction): any\n dateStrings?: boolean\n }\n pool?: {\n afterCreate: (connection: TConfig, callback: (val: any, con: any) => void) => Promise<any>\n } | undefined\n connections?: Record<string, TConfig>\n migrations?: {\n table: string\n path: string\n },\n factories?: {\n path: string\n },\n seeders?: {\n path: string\n },\n models?: {\n path: string\n }\n}\n\nexport type TConfig = TBaseConfig & ({\n client: 'pg'\n connection: Knex.PgConnectionConfig\n} | {\n client: 'oracle'\n connection: Knex.OracleDbConnectionConfig\n} | {\n client: 'mysql2'\n connection: Knex.MySql2ConnectionConfig\n} | {\n client: 'mysql'\n connection: Knex.MySqlConnectionConfig\n} | {\n client: 'sqlite3'\n connection: Knex.Sqlite3ConnectionConfig\n useNullAsDefault?: boolean\n} | {\n client: 'mariadb'\n connection: Knex.MariaSqlConnectionConfig\n useNullAsDefault?: boolean\n})\n\nexport const arquebusConfig = (config: any) => {\n return {\n sqlite: {\n client: config.connections.sqlite.driver,\n connection: <Knex.Sqlite3ConnectionConfig>{\n filename: database_path(config.connections.sqlite.database),\n debug: config.connections.sqlite.debug,\n flags: config.connections.sqlite.flags,\n options: config.connections.sqlite.options,\n expirationChecker: config.connections.sqlite.expirationChecker\n },\n useNullAsDefault: config.connections.sqlite.useNullAsDefault,\n },\n mysql: {\n client: config.connections.mysql.driver,\n connection: <Knex.MySql2ConnectionConfig>{\n host: config.connections.mysql.host ?? 'localhost',\n port: config.connections.mysql.port ?? 3306,\n user: config.connections.mysql.username ?? 'root',\n password: config.connections.mysql.password,\n database: config.connections.mysql.database,\n charset: config.connections.mysql.charset,\n socketPath: config.connections.mysql.unix_socket,\n localAddress: config.connections.mysql.url,\n },\n },\n mariadb: {\n client: config.connections.mariadb.driver,\n connection: <Knex.MariaSqlConnectionConfig>{\n host: config.connections.mariadb.host ?? 'localhost',\n port: config.connections.mariadb.port ?? 3306,\n user: config.connections.mariadb.username ?? 'root',\n password: config.connections.mariadb.password,\n database: config.connections.mariadb.database,\n charset: config.connections.mariadb.charset,\n socketPath: config.connections.mariadb.unix_socket,\n localAddress: config.connections.mariadb.url,\n expirationChecker: config.connections.mariadb.expirationChecker\n },\n },\n pgsql: {\n client: 'pg',\n connection: <Knex.PgConnectionConfig>{\n host: config.connections.pgsql.host ?? 'localhost',\n port: config.connections.pgsql.port ?? 3306,\n user: config.connections.pgsql.username ?? 'root',\n password: config.connections.pgsql.password,\n database: config.connections.pgsql.database,\n charset: config.connections.mysql.charset,\n connectionString: config.connections.pgsql.url,\n expirationChecker: config.connections.pgsql.expirationChecker\n },\n }\n } as unknown as TBaseConfig\n}\n","import { Model as BaseModel } from '@h3ravel/arquebus'\n\nexport class Model<M extends BaseModel = any> extends BaseModel {\n /**\n * Retrieve the model for a bound value.\n * \n * @param {any} value \n * @param {String|null} field \n * @returns \n */\n public resolveRouteBinding (value: any, field: undefined | string | null = null): Promise<M> {\n return this.newQuery().where(field ?? 'ids', value).firstOrFail()! as Promise<M>\n }\n}\n","import { MakeCommand } from '../Commands/MakeCommand'\nimport { MigrateCommand } from '../Commands/MigrateCommand'\nimport { SeedCommand } from '../Commands/SeedCommand'\nimport { ServiceProvider } from '@h3ravel/core'\nimport { arquebus } from '@h3ravel/arquebus'\nimport { arquebusConfig } from '../Configuration'\n\n/**\n * Database connection, ORM, migrations.\n * \n * Register DatabaseManager and QueryBuilder if required.\n * Set up ORM models and relationships.\n * Register migration and seeder commands.\n * \n */\nexport class DatabaseServiceProvider extends ServiceProvider {\n public static priority = 994\n\n register () {\n const config = this.app.make('config')\n\n const connection = Object.entries(arquebusConfig(config.get('database')))\n .find(([client]) => client === config.get('database.default'))\n ?.at(1)\n\n if (connection) {\n arquebus.addConnection(connection)\n }\n\n /** Register Musket Commands */\n this.commands([MigrateCommand, MakeCommand, SeedCommand])\n }\n}\n","import { IQueryBuilder } from '@h3ravel/arquebus/types'\nimport { arquebus } from '@h3ravel/arquebus'\n\nexport class DB {\n connection?: string\n\n constructor(connection?: string) {\n if (connection) {\n this.connection = connection\n }\n }\n\n /**\n * New instance\n */\n public static table (name: string): IQueryBuilder {\n return new DB().builder().table(name)\n }\n\n /**\n * Builder table instance\n */\n public static instance (connection?: string) {\n return new DB(connection).builder()\n }\n\n /**\n * Builder transaction instance\n */\n public static transaction<C> (callback: (...args: C[]) => any) {\n return new DB().builder().transaction(callback)\n }\n\n private builder () {\n return arquebus.getInstance().connection(this.connection)\n }\n}\n","import { Application } from '@h3ravel/core'\nimport { Arr } from '@h3ravel/support'\nimport { Seeder as BaseSeeder } from '@h3ravel/arquebus'\nimport { SeedCommand } from './Commands/SeedCommand'\nimport { TaskManager } from '@h3ravel/shared'\n\nexport class Seeder extends BaseSeeder {\n /**\n * Seeders that have been called at least one time.\n */\n static called: Seeder[] = []\n\n constructor(public app: Application, public command?: SeedCommand) {\n super()\n }\n\n async run (_conn?: SeedCommand['queryBuilder'], ..._args: any[]) { };\n\n /**\n * Run the given seeder class.\n *\n * @param className\n * @param silent\n * @param parameters\n * \n * @return this\n */\n public async call (className: typeof Seeder | typeof Seeder[], silent = false, parameters: any[] = []) {\n const classes = Arr.wrap(className)\n\n for (let i = 0; i < classes.length; i++) {\n const instance = this.resolve(classes[i])\n const name = instance.constructor.name\n\n if (silent === false) {\n await TaskManager.advancedTaskRunner(\n [[name, 'RUNNING'], [name, 'DONE']],\n async () => await instance.run(this.command!.queryBuilder, ...parameters)\n )\n } else {\n await instance.run(this.command!.queryBuilder, ...parameters)\n }\n\n Seeder.called.push(instance)\n }\n\n return this\n }\n\n /**\n * Resolve an instance of the given seeder class.\n *\n * @param className\n * \n * @return Seeder\n */\n protected resolve (className: typeof Seeder) {\n const instance = new (className as { new(app: any): Seeder })(this.app)\n\n if (this.command) {\n instance.setCommand(this.command)\n }\n\n return instance\n }\n\n /**\n * Run the given seeder class.\n *\n * @param className\n * @param silent\n * @param parameters\n * \n * @return void\n */\n public async callWith (className: typeof Seeder | typeof Seeder[], parameters: any[]) {\n await this.call(className, false, parameters)\n }\n\n /**\n * Silently run the given seeder class.\n *\n * @param className\n * @param parameters\n * \n * @return void\n */\n public async callSilent (className: typeof Seeder | typeof Seeder[], parameters: any[] = []) {\n await this.call(className, true, parameters)\n }\n\n /**\n * Set the console command instance.\n *\n * @param command\n * \n * @return this\n */\n public setCommand (command: SeedCommand) {\n this.command = command\n\n return this\n }\n}\n"],"x_google_ignoreList":[1],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -1,8 +1,59 @@
1
1
  /// <reference path="./app.globals.d.ts" />
2
- import { ConsoleCommand, ServiceProvider } from "@h3ravel/core";
2
+ import { Application, ConsoleCommand, ServiceProvider } from "@h3ravel/core";
3
+ import * as _h3ravel_arquebus0 from "@h3ravel/arquebus";
4
+ import { Model as Model$1, QueryBuilder, Seeder as Seeder$1 } from "@h3ravel/arquebus";
5
+ import * as knex0 from "knex";
3
6
  import { Knex } from "knex";
4
- import { Model as Model$1 } from "@h3ravel/arquebus";
7
+ import { IQueryBuilder } from "@h3ravel/arquebus/types";
5
8
 
9
+ //#region src/Commands/MakeCommand.d.ts
10
+ declare class MakeCommand extends ConsoleCommand {
11
+ /**
12
+ * The name and signature of the console command.
13
+ *
14
+ * @var string
15
+ */
16
+ protected signature: string;
17
+ /**
18
+ * The console command description.
19
+ *
20
+ * @var string
21
+ */
22
+ protected description: string;
23
+ handle(this: any): Promise<void>;
24
+ /**
25
+ * Generate a new database migration class
26
+ */
27
+ protected makeMigration(): Promise<void>;
28
+ /**
29
+ * Create a new model factory
30
+ */
31
+ protected makeFactory(): void;
32
+ /**
33
+ * Create a new seeder class
34
+ */
35
+ protected makeSeeder(): Promise<void>;
36
+ /**
37
+ * Generate a new Arquebus model class
38
+ */
39
+ protected makeModel(): Promise<void>;
40
+ /**
41
+ * Ge the database migration file name
42
+ *
43
+ * @param table
44
+ * @param create
45
+ * @param type
46
+ * @returns
47
+ */
48
+ getStubName(type: 'migration' | 'seeder' | 'model' | 'factory', ext?: 'ts' | 'js', {
49
+ table,
50
+ create
51
+ }?: {
52
+ table?: string;
53
+ create?: boolean;
54
+ }): string;
55
+ }
56
+ //#endregion
6
57
  //#region src/Commands/MigrateCommand.d.ts
7
58
  declare class MigrateCommand extends ConsoleCommand {
8
59
  /**
@@ -63,6 +114,34 @@ declare class MigrateCommand extends ConsoleCommand {
63
114
  protected migratePublish(): Promise<void>;
64
115
  }
65
116
  //#endregion
117
+ //#region src/Commands/SeedCommand.d.ts
118
+ declare class SeedCommand extends ConsoleCommand {
119
+ /**
120
+ * The current query builder instance
121
+ */
122
+ queryBuilder: QueryBuilder;
123
+ /**
124
+ * The current database connection name
125
+ */
126
+ private connection;
127
+ /**
128
+ * The name and signature of the console command.
129
+ *
130
+ * @var string
131
+ */
132
+ protected signature: string;
133
+ /**
134
+ * The console command description.
135
+ *
136
+ * @var string
137
+ */
138
+ protected description: string;
139
+ /**
140
+ * Execute the console command.
141
+ */
142
+ handle(): Promise<void>;
143
+ }
144
+ //#endregion
66
145
  //#region src/Configuration.d.ts
67
146
  type TFunction = (...args: any[]) => any;
68
147
  interface TField {
@@ -148,5 +227,88 @@ declare class DatabaseServiceProvider extends ServiceProvider {
148
227
  register(): void;
149
228
  }
150
229
  //#endregion
151
- export { DatabaseServiceProvider, MigrateCommand, Model, TBaseConfig, TConfig, TField, arquebusConfig };
230
+ //#region src/Query/DB.d.ts
231
+ declare class DB {
232
+ connection?: string;
233
+ constructor(connection?: string);
234
+ /**
235
+ * New instance
236
+ */
237
+ static table(name: string): IQueryBuilder;
238
+ /**
239
+ * Builder table instance
240
+ */
241
+ static instance(connection?: string): _h3ravel_arquebus0.QueryBuilder<_h3ravel_arquebus0.Model, _h3ravel_arquebus0.Model | _h3ravel_arquebus0.Model[]>;
242
+ /**
243
+ * Builder transaction instance
244
+ */
245
+ static transaction<C>(callback: (...args: C[]) => any): Promise<knex0.Knex.Transaction<any, any[]>> | undefined;
246
+ private builder;
247
+ }
248
+ //#endregion
249
+ //#region src/Seeder.d.ts
250
+ declare class Seeder extends Seeder$1 {
251
+ app: Application;
252
+ command?: SeedCommand | undefined;
253
+ /**
254
+ * Seeders that have been called at least one time.
255
+ */
256
+ static called: Seeder[];
257
+ constructor(app: Application, command?: SeedCommand | undefined);
258
+ run(_conn?: SeedCommand['queryBuilder'], ..._args: any[]): Promise<void>;
259
+ /**
260
+ * Run the given seeder class.
261
+ *
262
+ * @param className
263
+ * @param silent
264
+ * @param parameters
265
+ *
266
+ * @return this
267
+ */
268
+ call(className: typeof Seeder | typeof Seeder[], silent?: boolean, parameters?: any[]): Promise<this>;
269
+ /**
270
+ * Resolve an instance of the given seeder class.
271
+ *
272
+ * @param className
273
+ *
274
+ * @return Seeder
275
+ */
276
+ protected resolve(className: typeof Seeder): Seeder;
277
+ /**
278
+ * Run the given seeder class.
279
+ *
280
+ * @param className
281
+ * @param silent
282
+ * @param parameters
283
+ *
284
+ * @return void
285
+ */
286
+ callWith(className: typeof Seeder | typeof Seeder[], parameters: any[]): Promise<void>;
287
+ /**
288
+ * Silently run the given seeder class.
289
+ *
290
+ * @param className
291
+ * @param parameters
292
+ *
293
+ * @return void
294
+ */
295
+ callSilent(className: typeof Seeder | typeof Seeder[], parameters?: any[]): Promise<void>;
296
+ /**
297
+ * Set the console command instance.
298
+ *
299
+ * @param command
300
+ *
301
+ * @return this
302
+ */
303
+ setCommand(command: SeedCommand): this;
304
+ }
305
+ //#endregion
306
+ //#region src/Utils/TableGuesser.d.ts
307
+ declare class TableGuesser {
308
+ static CREATE_PATTERNS: RegExp[];
309
+ static CHANGE_PATTERNS: RegExp[];
310
+ static guess(migration: string): (string | boolean)[];
311
+ }
312
+ //#endregion
313
+ export { DB, DatabaseServiceProvider, MakeCommand, MigrateCommand, Model, SeedCommand, Seeder, TBaseConfig, TConfig, TField, TableGuesser, arquebusConfig };
152
314
  //# sourceMappingURL=index.d.cts.map
package/dist/index.d.ts CHANGED
@@ -1,8 +1,59 @@
1
1
  /// <reference path="./app.globals.d.ts" />
2
- import { ConsoleCommand, ServiceProvider } from "@h3ravel/core";
3
- import { Model as Model$1 } from "@h3ravel/arquebus";
2
+ import { Application, ConsoleCommand, ServiceProvider } from "@h3ravel/core";
3
+ import * as _h3ravel_arquebus0 from "@h3ravel/arquebus";
4
+ import { Model as Model$1, QueryBuilder, Seeder as Seeder$1 } from "@h3ravel/arquebus";
5
+ import * as knex0 from "knex";
4
6
  import { Knex } from "knex";
7
+ import { IQueryBuilder } from "@h3ravel/arquebus/types";
5
8
 
9
+ //#region src/Commands/MakeCommand.d.ts
10
+ declare class MakeCommand extends ConsoleCommand {
11
+ /**
12
+ * The name and signature of the console command.
13
+ *
14
+ * @var string
15
+ */
16
+ protected signature: string;
17
+ /**
18
+ * The console command description.
19
+ *
20
+ * @var string
21
+ */
22
+ protected description: string;
23
+ handle(this: any): Promise<void>;
24
+ /**
25
+ * Generate a new database migration class
26
+ */
27
+ protected makeMigration(): Promise<void>;
28
+ /**
29
+ * Create a new model factory
30
+ */
31
+ protected makeFactory(): void;
32
+ /**
33
+ * Create a new seeder class
34
+ */
35
+ protected makeSeeder(): Promise<void>;
36
+ /**
37
+ * Generate a new Arquebus model class
38
+ */
39
+ protected makeModel(): Promise<void>;
40
+ /**
41
+ * Ge the database migration file name
42
+ *
43
+ * @param table
44
+ * @param create
45
+ * @param type
46
+ * @returns
47
+ */
48
+ getStubName(type: 'migration' | 'seeder' | 'model' | 'factory', ext?: 'ts' | 'js', {
49
+ table,
50
+ create
51
+ }?: {
52
+ table?: string;
53
+ create?: boolean;
54
+ }): string;
55
+ }
56
+ //#endregion
6
57
  //#region src/Commands/MigrateCommand.d.ts
7
58
  declare class MigrateCommand extends ConsoleCommand {
8
59
  /**
@@ -63,6 +114,34 @@ declare class MigrateCommand extends ConsoleCommand {
63
114
  protected migratePublish(): Promise<void>;
64
115
  }
65
116
  //#endregion
117
+ //#region src/Commands/SeedCommand.d.ts
118
+ declare class SeedCommand extends ConsoleCommand {
119
+ /**
120
+ * The current query builder instance
121
+ */
122
+ queryBuilder: QueryBuilder;
123
+ /**
124
+ * The current database connection name
125
+ */
126
+ private connection;
127
+ /**
128
+ * The name and signature of the console command.
129
+ *
130
+ * @var string
131
+ */
132
+ protected signature: string;
133
+ /**
134
+ * The console command description.
135
+ *
136
+ * @var string
137
+ */
138
+ protected description: string;
139
+ /**
140
+ * Execute the console command.
141
+ */
142
+ handle(): Promise<void>;
143
+ }
144
+ //#endregion
66
145
  //#region src/Configuration.d.ts
67
146
  type TFunction = (...args: any[]) => any;
68
147
  interface TField {
@@ -148,5 +227,88 @@ declare class DatabaseServiceProvider extends ServiceProvider {
148
227
  register(): void;
149
228
  }
150
229
  //#endregion
151
- export { DatabaseServiceProvider, MigrateCommand, Model, TBaseConfig, TConfig, TField, arquebusConfig };
230
+ //#region src/Query/DB.d.ts
231
+ declare class DB {
232
+ connection?: string;
233
+ constructor(connection?: string);
234
+ /**
235
+ * New instance
236
+ */
237
+ static table(name: string): IQueryBuilder;
238
+ /**
239
+ * Builder table instance
240
+ */
241
+ static instance(connection?: string): _h3ravel_arquebus0.QueryBuilder<_h3ravel_arquebus0.Model, _h3ravel_arquebus0.Model | _h3ravel_arquebus0.Model[]>;
242
+ /**
243
+ * Builder transaction instance
244
+ */
245
+ static transaction<C>(callback: (...args: C[]) => any): Promise<knex0.Knex.Transaction<any, any[]>> | undefined;
246
+ private builder;
247
+ }
248
+ //#endregion
249
+ //#region src/Seeder.d.ts
250
+ declare class Seeder extends Seeder$1 {
251
+ app: Application;
252
+ command?: SeedCommand | undefined;
253
+ /**
254
+ * Seeders that have been called at least one time.
255
+ */
256
+ static called: Seeder[];
257
+ constructor(app: Application, command?: SeedCommand | undefined);
258
+ run(_conn?: SeedCommand['queryBuilder'], ..._args: any[]): Promise<void>;
259
+ /**
260
+ * Run the given seeder class.
261
+ *
262
+ * @param className
263
+ * @param silent
264
+ * @param parameters
265
+ *
266
+ * @return this
267
+ */
268
+ call(className: typeof Seeder | typeof Seeder[], silent?: boolean, parameters?: any[]): Promise<this>;
269
+ /**
270
+ * Resolve an instance of the given seeder class.
271
+ *
272
+ * @param className
273
+ *
274
+ * @return Seeder
275
+ */
276
+ protected resolve(className: typeof Seeder): Seeder;
277
+ /**
278
+ * Run the given seeder class.
279
+ *
280
+ * @param className
281
+ * @param silent
282
+ * @param parameters
283
+ *
284
+ * @return void
285
+ */
286
+ callWith(className: typeof Seeder | typeof Seeder[], parameters: any[]): Promise<void>;
287
+ /**
288
+ * Silently run the given seeder class.
289
+ *
290
+ * @param className
291
+ * @param parameters
292
+ *
293
+ * @return void
294
+ */
295
+ callSilent(className: typeof Seeder | typeof Seeder[], parameters?: any[]): Promise<void>;
296
+ /**
297
+ * Set the console command instance.
298
+ *
299
+ * @param command
300
+ *
301
+ * @return this
302
+ */
303
+ setCommand(command: SeedCommand): this;
304
+ }
305
+ //#endregion
306
+ //#region src/Utils/TableGuesser.d.ts
307
+ declare class TableGuesser {
308
+ static CREATE_PATTERNS: RegExp[];
309
+ static CHANGE_PATTERNS: RegExp[];
310
+ static guess(migration: string): (string | boolean)[];
311
+ }
312
+ //#endregion
313
+ export { DB, DatabaseServiceProvider, MakeCommand, MigrateCommand, Model, SeedCommand, Seeder, TBaseConfig, TConfig, TField, TableGuesser, arquebusConfig };
152
314
  //# sourceMappingURL=index.d.ts.map