mirror of
https://github.com/typeorm/typeorm.git
synced 2025-12-08 21:26:23 +00:00
Conflicts: CHANGELOG.md src/schema-builder/RdbmsSchemaBuilder.ts src/schema-builder/table/Table.ts test/utils/test-utils.ts
26 KiB
26 KiB
Changelog
TypeORM follows a semantic versioning and until 1.0.0 breaking changes may appear in 0.x.x versions,
however since API is already quite stable we don't expect too much breaking changes.
If we missed a note on some change or you have a questions on migrating from old version,
feel free to ask us and community.
0.2.0 (next: npm i typeorm@next)
- completely refactored, improved and optimized persistence process and performance.
- removed cascade remove functionality, refactored how cascades are working.
- removed
cascadeRemoveoption from relation options. - replaced
cascadeAllwithcascade: truesyntax from relation options. - replaced
cascadeInsertwithcascade: ["insert"]syntax from relation options. - replaced
cascadeUpdatewithcascade: ["update"]syntax from relation options. - now when one-to-one or many-to-one relation is loaded and its not set (set to null) ORM returns you entity with relation set to
nullinstead ofundefined propertyas before. - now relation id can be set directly to relation, e.g.
Post { @ManyToOne(type => Tag) tag: Tag|number }withpost.tag = 1usage. - now you can disable persistence on any relation by setting
@OneToMany(type => Post, post => tag, { persistence: false }). This can dramatically improve entity save performance. loadAllRelationIdsmethod ofQueryBuildernow accepts list of relation paths that needs to be loaded, alsodisableMixedMapoption is now by default set to false, but you can enable it via new method parameteroptions- lot of changes affect closure table pattern which is planned for fix in 0.3.0
- now
returningandoutputstatements ofInsertQueryBuildersupport array of columns as argument - now when many-to-many and one-to-many relation set to
nullall items from that relation are removed, just like it would be set to empty array - fixed issues with relation updation from one-to-one non-owner side
- now version column is updated on the database level, not by ORM anymore
- now created date and update date columns is set on the database level, not by ORM anymore (e.g. using
CURRENT_TIMESTAMPas a default value) - now
InsertQueryBuilder,UpdateQueryBuilderandDeleteQueryBuilderautomatically update entities after execution. This only happens if real entity objects are passed. Some databases (like mysql and sqlite) requires a separate query to perform this operation. If you want to disable this behavior usequeryBuilder.updateEntity(false)method. This feature is convenient for users who have uuid, create/update date, version columns or columns with DEFAULT value set. - now
InsertQueryBuilder,UpdateQueryBuilderandDeleteQueryBuildercall subscribers and listeners. You can disable this behavior by settingqueryBuilder.callListeners(false)method. RepositoryandEntityManagermethod.findOneis deprecated and will be removed in next 0.3.0 version. UsefindOne(id)method instead now.InsertQueryBuildernow returnsInsertResultwhich contains extended information and metadata about runned queryUpdateQueryBuildernow returnsUpdateResultwhich contains extended information and metadata about runned queryDeleteQueryBuildernow returnsDeleteResultwhich contains extended information and metadata about runned query- now insert / update / delete queries built with QueryBuilder can be wrapped into a transaction using
useTransaction(true)method of the QueryBuilder. insert,updateanddeletemethods ofQueryRunnernow useInsertQueryRunner,UpdateQueryRunnerandDeleteQueryRunnerinside- removed deprecated
removeById,removeByIdsmethods - removed
deleteByIdmethod - usedelete(id)method instead now - removed
updateByIdmethod - useupdate(id)method instead now - changed
snakeCaseutility - check table names after upgrading - added ability to disable transaction in
saveandremoveoperations - added ability to disable listeners and subscribers in
saveandremoveoperations - added ability to save and remove objects in chunks
- added ability to disable entity reloading after insertion and updation
- class table inheritance functionality has been completely dropped
- single table inheritance functionality has been fixed
@SingleEntityChildhas been renamed to@ChildEntity@DiscriminatorValuehas been removed, instead parameter in@ChildEntitymust be used, e.g.@ChildEntity("value")@DiscriminatorColumndecorator has been removed, use@TableInheritanceoptions instead nowskipSyncin entity options has been renamed tosynchronize. Now if it set to false schema synchronization for the entity will be disabled. By default its true.- now array initializations for relations are forbidden and ORM throws an error if there are entities with initialized relation arrays.
- added
@Uniquedecorator. Accepts custom unique constraint name and columns to be unique. Used only on as composite unique constraint, on table level. E.g.@Unique("uq_id_name", ["id", "name"])
0.1.10
sqljsdriver now enforces FK integrity by default (same behavior assqlite)
0.1.9
- fixed bug with sqlite and mysql schema synchronization when uuid column is used (#1332)
0.1.8
- New DebugLogger (#1302)
- fixed issue with primary relations being nullable by default - now they are not nullable always
- fixed issue with multiple databases support when tables with same name are used across multiple databases
0.1.7
- fixed bug with migrations execution in mssql (#1254)
- added support for more complex ordering in paginated results (#1259)
- MSSQL users are required to add "order by" for skip/offset operations since mssql does not support OFFSET/LIMIT statement without order by applied
- fixed issue when relation query builder methods execute operations with empty arrays (#1241)
- Webpack can now be used for node projects and not only for browser projects. To use TypeORM in Ionic with minimal changes checkout the ionic-example for the needed changes. To use webpack for non-Ionic browser webpack projects, the needed configuration can be found in the docs (#1280)
- added support for loading sub-relations in via find options (#1270)
0.1.6
- added support for indices and listeners in embeddeds
- added support for
ON CONFLICTkeyword - fixed bug with query builder where lazy relations are loaded multiple times when using
leftJoinAndSelect(#996) - fixed bug in all sqlite based drivers that generated wrong uuid columns (#1128 and #1161)
0.1.5
- fixed bug where
findByIdswould return values with an empty array (#1118) - fixed bug in MigrationExecutor that didn't release created query builder (#1201)
0.1.4
- fixed bug in mysql driver that generated wrong query when using skip (#1099)
- added option to create query builder from repository without alias(#1084)
- fixed bug that made column option "select" unusable (#1110)
- fixed bug that generated mongodb projects what don't work (#1119)
0.1.3
- added support for
sql.js. To use it you just need to installnpm i sql.jsand usesqljsas driver type (#894). - added explicit require() statements for drivers (#1143)
- fixed bug where wrong query is generated with multiple primary keys (#1146)
- fixed bug for oracle driver where connect method was wrong (#1177)
0.1.2
- sqlite now supports relative database file paths (#798 and #799)
- fixed bug with not properly working
updatemethod (#1037, #1042) - fixed bug with replication support (#1035)
- fixed bug with wrong embedded column names being generated (#969)
- added support for caching in respositories (#1057)
- added support for the
citextcolumn type for postgres (#1075)
0.1.1
- added support for
pg-nativefor postgres (#975). To use it you just need to installnpm i pg-nativeand it will be picked up automatically. - now Find Options support
-1and1forDESCandASCvalues. This is better user experience for MongoDB users. - now inheritances in embeddeds are supported (#966).
isArray: booleaninColumnOptionsis deprecated. Usearray: booleaninstead.- deprecated
removeByIdmethod, now usedeleteByIdmethod instead. - added
insertanddeletemethods into repository and entity manager. - fixed multiple issues with
update,updateByIdandremoveByIdmethods in repository and entity manager. Now they do not usesaveandremovemethods anymore - instead they are using QueryBuilder to build and execute their queries. - now
savemethod can accept partial entities. - removed opencollective dependency.
- fixed issues with bulk entity insertions.
- find* methods now can find by embed conditions.
- fixed issues with multiple schema support, added option to
@JoinTableto support schema and database. - multiple small bugfixes.
0.1.0
BREAKING CHANGES
Table,AbstractTable,ClassTableChild,ClosureTable,EmbeddableTable,SingleTableChilddeprecated decorators were removed. UseEntity,ClassEntityChild,ClosureEntity,SingleEntityChilddecorators instead.EntityManager#create,Repository#create,EntityManager#preload,Repository#preload,EntityManager#merge,Repository#mergemethods now acceptDeepPartial<Entity>instead ofObject.EntityManager#merge,Repository#mergemethods first argument is now an entity where to need to merge all given entity-like objects.- changed
find*repository methods. Now conditions arePartial<Entity>type. - removed
FindOptionsinterface and introduced two new interfaces:FindOneOptionsandFindManyOptions- each for its ownfindOne*orfind*methods. - dropped out some of options of
FindOptions. UseQueryBuilderinstead. However, added few new options as well. - deprecated method
addParametershas been removed fromQueryBuilder. UsesetParametersinstead. - removed
setMaxResults,setFirstResultmethods inQueryBuilder. Usetakeandskipmethods instead. - renamed
entityManagertomanagerinConnection,AbstractRepositoryand event objects.entityManagerproperty was removed. - renamed
persisttosaveinEntityManagerandRepositoryobjects.persistmethod was removed. SpecificRepositoryis removed. Use relational query builder functionality instead.transactionmethod has been removed fromRepository. UseEntityManager#transactionmethod instead.- custom repositories do not support container anymore.
- controller / subscriber / migrations from options tsconfig now appended with a project root directory
- removed naming strategy decorator, naming strategy by name functionality. Now naming strategy should be registered by passing naming strategy instance directly.
driversection in connection options now deprecated. All settings should go directly to connection options root.- removed
fromTablefrom theQueryBuilder. Now use regularfromto select from tables. - removed
usePooloption from the connection options. Pooling now is always enabled. - connection options interface has changed and now each platform has its own set of connection options.
storagein sqlite options has been renamed todatabase.- env variable names for connection were changed (
TYPEORM_DRIVER_TYPEhas been renamed toTYPEORM_CONNECTION, some other renaming). More env variable names you can find inConnectionOptionsEnvReaderclass. - some api changes in
ConnectionManagerandcreateConnection/createConnectionsmethods of typeorm main entrypoint. simple_arraycolumn type now is calledsimple-array- some column types were removed. Now orm uses column types of underlying database.
- now
numbertype in column definitions (like@Column() likes: number) maps tointegerinstead ofdouble. This is more programmatic design. If you need to store float-pointing values - define a type explicitly. fixedLengthin column options has been removed. Now actual column types can be used, e.g.@Column("char")or@Column("varchar").timezoneoption has been removed from column options. Now corresponding database types can be used instead.localTimezonehas been removed from the column options.skipSchemaSyncin entity options has been renamed toskipSync.setLimitandsetOffsetinQueryBuilderwere renamed intolimitandoffset.nativeInterfacehas been removed from a driver interface and implementations.- now typeorm works with the latest version of mssql (version 4).
- fixed how orm creates default values for SqlServer - now it creates constraints for it as well.
- migrations interface has changed - now
upanddownaccept onlyQueryRunner. To useConnectionandEntityManageruse properties ofQueryRunner, e.g.queryRunner.connectionandqueryRunner.manager. - now
updatemethod inQueryBuilderacceptsPartial<Entity>and property names used in update map are column property names and they are automatically mapped to column names. SpecificRepositoryhas been removed. Instead newRelationQueryBuilderwas introduced.getEntitiesAndRawResultsofQueryBuilderhas been renamed togetRawAndEntities.- in mssql all constraints are now generated using table name in their names - this is fixes issues with duplicate constraint names.
- now when object is loaded from the database all its columns with null values will be set into entity properties as null. Also after saving entity with unset properties that will be stored as nulls - their (properties) values will be set to null.
- create and update dates in entities now use date with fractional seconds.
@PrimaryGeneratedColumndecorator now accept generation strategy as first argument (default isincrement), instead of column type. Column type must be passed in options object, e.g.@PrimaryGeneratedColumn({ type: "bigint"}).@PrimaryColumnnow does not acceptgeneratedparameter in options. Use@Generatedor@PrimaryGeneratedColumndecorators instead.- Logger interface has changed. Custom logger supply mechanism has changed.
- Now
loggingoptions in connection options is simple "true", or "all", or list of logging modes can be supplied. - removed
driversection in connection options. Define options right in the connection options section. Embeddeddecorator is deprecated now. use@Column(type => SomeEmbedded)instead.schemaNamein connection options is removed. Useschemainstead.TYPEORM_AUTO_SCHEMA_SYNCenv variable is now calledTYPEORM_SYNCHRONIZE.schemaSyncmethod inConnectionhas been renamed tosynchronize.getEntityManagerhas been deprecated. UsegetManagerinstead.@TransactionEntityManageris now called@TransactionManagernow.EmbeddableEntity,Embedded,AbstractEntitydecorators has been removed. There is no need to useEmbeddableEntityandAbstractEntitydecorators at all - entity will work as expected without them. Instead of@Embedded(type => X)decorator now@Column(type => X)must be used instead.tablesPrefix,autoSchemaSync,autoMigrationsRun,dropSchemaOnConnectionoptions were removed. UseentityPrefix,synchronize,migrationsRun,dropSchemaoptions instead.- removed
persistmethod from theRepositoryandEntityManager. Usesavemethod instead. - removed
getEntityManagerfromtypeormnamespace. UsegetManagermethod instead. - refactored how query runner works, removed query runner provider
- renamed
TableSchemaintoTable - renamed
ColumnSchemaintoTableColumn - renamed
ForeignKeySchemaintoTableForeignKey - renamed
IndexSchemaintoTableIndex - renamed
PrimaryKeySchemaintoTablePrimaryKey
NEW FEATURES
- added
mongodbsupport. - entity now can be saved partially within
updatemethod. - added prefix support to embeddeds.
- now embeddeds inside other embeddeds are supported.
- now relations are supported inside embeds.
- now relations for multiple primary keys are generated properly.
- now ormconfig is read from
.env,.js,.json,.yml,.xmlformats. - all database-specific types are supported now.
- now migrations generation in mysql is supported. Use
typeorm migrations:generatecommand. getGeneratedQuerywas renamed togetQueryinQueryBuilder.getSqlWithParameterswas renamed togetSqlAndParametersinQueryBuilder.- sql queries are highlighted in console.
- added
@Generateddecorator. It can acceptstrategyoption with valuesincrementanduuid. Default isincrement. It always generates value for column, except when column defined asnullableand user setsnullvalue in to column. - added logging of log-running requests.
- added replication support.
- added custom table schema and database support in
Postgres,MysqlandSql Serverdrivers. - multiple bug fixes.
- added ActiveRecord support (by extending BaseEntity) class
Connectionhow hascreateQueryRunnerthat can be used to control database connection and its transaction stateQueryBuilderis abstract now and all different kinds of query builders were created for different query types -SelectQueryBuilder,UpdateQueryBuilder,InsertQueryBuilderandDeleteQueryBuilderwith individual method available.
0.0.11
- fixes #341 - issue when trying to create a
OneToOnerelation withreferencedColumnNamewhere the relation is not between primary keys
0.0.10
- added
ObjectLiteralandObjectTypeinto main exports - fixed issue fixes #345.
- fixed issue with migration not saving into the database correctly. Note its a breaking change if you have run migrations before and have records in the database table, make sure to apply corresponding changes. More info in #360 issue.
0.0.9
- fixed bug with indices from columns are not being inherited from parent entity #242
- added support of UUID primary columns (thanks @seanski)
- added
countmethod to repository and entity manager (thanks @aequasi)
0.0.8
- added complete babel support
- added
clearmethod toRepositoryandEntityManagerwhich allows to truncate entity table - exported
EntityRepositoryintypeorm/index - fixed issue with migration generation in #239 (thanks to @Tobias4872)
- fixed issue with using extra options with SqlServer #236 (thanks to @jmai00)
- fixed issue with non-pooled connections #234 (thanks to @benny-medflyt)
- fixed issues: #242, #240, #204, #219, #233, #234
0.0.7
- added custom entity repositories support
- merged typeorm-browser and typeorm libraries into single package
- added
@Transactiondecorator - added exports to
typeorm/indexfor naming strategies - added shims for browsers using typeorm in frontend models, also added shim to use typeorm with class-transformer library on the frontend
- fixed issue when socketPath could not be used with mysql driver (thanks @johncoffee)
- all table decorators are renamed to
Entity(Table=>Entity,AbstractTable=>AbstractEntity,ClassTableChild=>ClassEntityChild,ClosureTable=>ClosureEntity,EmbeddableTable=>EmbeddableEntity,SingleTableChild=>SingleEntityChild). This change is required because upcoming versions of orm will work not only with tables, but also with documents and other database-specific "tables". Previous decorator names are deprecated and will be removed in the future. - added custom repositories support. Example in samples directory.
- cascade remove options has been removed from
@ManyToMany,@OneToManydecorators. Also cascade remove is not possible from two sides of@OneToOnerelationship now. - fixed issues with subscribers and transactions
- typeorm now has translation in chinese (thanks @brookshi)
- added
schemaNamesupport for postgres database #152 (thanks @mingyang91) - fixed bug when new column was'nt added properly in sqlite #157
- added ability to set different types of values for DEFAULT value of the column #150
- added ability to use zero, false and empty string values as DEFAULT values in #189 (thanks to @Luke265)
- fixed bug with junction tables persistence (thanks @Luke265)
- fixed bug regexp in
QueryBuilder(thanks @netnexus) - fixed issues #202, #203 (thanks to @mingyang91)
- fixed issues #159, #181, #176, #192, #191, #190, #179, #177, #175, #174, #150, #159, #173, #195, #151
0.0.6
- added
JSONBsupport for Postgres in #126 (thanks @CreepGin@CreepGin) - fixed in in sqlite query runner in #141 (thanks @marcinwadon)
- added shortcut exports for table schema classes in #135 (thanks @eduardoweiland)
- fixed bugs with single table inheritance in #132 (thanks @eduardoweiland)
- fixed issue with
TIMEcolumn in #134 (thanks @cserron) - fixed issue with relation id in #138 (thanks @mingyang91)
- fixed bug when URL for pg was parsed incorrectly #114 (thanks @mingyang91)
- fixed bug when embedded is not being updated
- metadata storage now in global variable
- entities are being loaded in migrations and can be used throw the entity manager or their repositories
- migrations now accept
EntityMetadatawhich can be used within one transaction - fixed issue with migration running on windows #140
- fixed bug with with Class Table Inheritance #144
0.0.5
- changed
getScalarManytogetRawManyinQueryBuilder - changed
getScalarOnetogetRawOneinQueryBuilder - added migrations support
0.0.4
- fixed problem when
order byis used withlimit - fixed problem when
decorators-shim.d.tsexist and does not allow to import decorators (treats like they exist in global) - fixed Sql Server driver bugs
0.0.3
- completely refactored persistence mechanism:
- added experimental support of
{ nullable: true }in relations - cascade operations should work better now
- optimized all queries
- entities with recursive entities should be persisted correctly now
- added experimental support of
- now
undefinedproperties are skipped in the persistence operation, as well asundefinedrelations. - added platforms abstractions to allow typeorm to work on multiple platforms
- added experimental support of typeorm in the browser
- breaking changes in
QueryBuilder:getSingleResult()renamed togetOne()getResults()renamed togetMany()getResultsAndCount()renamed togetManyAndCount()- in the innerJoin*/leftJoin* methods now no need to specify
ON - in the innerJoin*/leftJoin* methods no longer supports parameters, use
addParametersorsetParameterinstead. setParametersis now works just likeaddParameters(because previous behaviour confused users),addParametersnow is deprecatedgetOnereturnsPromise<Entity|undefined>
- breaking changes in
RepositoryandEntityManager:findOneand .findOneByIdnow returnPromise<Entity|undefined>instead ofPromise`
- now typeorm is compiled into
ES5instead ofES6- this allows to run it on older versions of node.js - fixed multiple issues with dates and utc-related stuff
- multiple bugfixes
0.0.2
- lot of API refactorings
- complete support TypeScript 2
- optimized schema creation
- command line tools
- multiple drivers support
- multiple bugfixes
0.0.1
- first stable version, works with TypeScript 1.x