Commit Graph

228 Commits

Author SHA1 Message Date
Jinzhu 3500dfa1b6 expose db.New as API 2015-01-06 15:11:41 +08:00
jnfeinstein 8b451f0084 Add support for polymorphic relationships using the POLYMORPHIC setting.
This commit adds support for two settings:

FOREIGNTYPE - A field that is used to store the type of the owner.

POLYMORPHIC - A shortcut to set FOREIGNKEY and FOREIGNTYPE to the same
value suffixed by "Id" and "Type" respectively.

The type is stored as the table name, which I thought might be useful
for other queries.

The biggest gotcha of this commit is that I flipped the definition of
has_one and belongs_to. gorm is very flexible such that it didn't
really care if it was a has_one or belongs_to, and can pretty much
determine it at runtime. For the sake of the error, I had to define
one of them as belongs_to, and I chose the one with the fields as
the belongs_to, like ActiveRecord. The error could probably be
genericized to "gorm cannot determine type", but I think it's nicer
to tell people DONT DO PATTERN XYZ CAUSE IT WONT WORK. Functionally,
it doesn't matter.
2014-11-25 21:35:47 -08:00
Jinzhu a4e0ef6509 Refactor reuse existing database connection 2014-11-25 15:21:28 +08:00
jnfeinstein 1d6b59f223 Allow .Open to reuse existing database connections.
This commit allows you to pass a string or an existing database
connection as the source for gorm. The dialect is still required
because a) there is no common reference to it as far as i know, and
b) gorm allows the dialect to differ from the driver. So, for the sake
of simplicity, you still have to specity the dialect.

This is useful if you have an existing transaction, but still
want to use gorm to format your queries.

This is dependent on the defintion of DB in pkg database/sql having
the field 'dsn', which is the database source, obtained via reflect.
2014-11-25 15:21:28 +08:00
Jinzhu e9684db42a Show error message if not using addressable value for auto migration 2014-11-25 13:44:14 +08:00
jnfeinstein 429a100856 Add additional methods of specifying the 'select' portion of a query.
This commit adds more ways of specifying selects:

-) You can now pass in a []string.  This is mostly for convenience,
since you may want to dynamically create a list of fields to be
selected.

-) You can now use variables.  This is important because a select
could take user input.  For example, finding a MAX between a record
and a given number could be easily done using select, and then
you don't have to process anything in backend logic.  This is also
necessary to use postgres text search capabilities (which actaully
play nicely with the rest of gorm).

-) You can now chain select calls.  This could be useful in
conjunction with gorm's scopes functionality.
2014-11-17 07:36:26 -05:00
Jinzhu a29ac54e48 Limit condition should not be inherited by following queries 2014-10-28 17:18:11 +08:00
Jinzhu 5eeff5d38f Fix some errors for the mssql support pull request 2014-09-19 21:49:04 +08:00
Joel Trost 6b7d0879c5 Ran gofmt and removed panic statements
Unnecessary panics in create_test and delete_test removed
2014-09-16 14:24:55 -07:00
Joel Trost f79e1a2ef6 GORM support for MSSQL, passes all tests 2014-09-16 14:21:35 -07:00
Jinzhu b2360c11da Add Fields for embedded struct 2014-08-30 21:42:35 +08:00
Robert B Gordon 94aa843830 Add HasTable() 2014-08-29 00:28:54 -05:00
Jinzhu 5347765bd3 Merge pull request #206 from cihangir/master
gorm: added ability to change the time.now format
2014-08-27 16:19:55 +08:00
Jinzhu 922395c965 Add InstantSet for DB 2014-08-25 17:10:46 +08:00
Jinzhu 3af077ac46 Refact First, Last to make it possible to reset table name in Plugin 2014-08-25 16:41:26 +08:00
Cihangir SAVAS 4e90fbf4e8 gorm: added ability to change the time.now format 2014-08-23 01:00:04 -07:00
Jinzhu 39ac95adbb Add InstanceSet, InstanceGet fomr Scope 2014-08-20 17:05:02 +08:00
Jinzhu 9012c9ea09 Add Set, Get method for DB 2014-08-20 16:25:01 +08:00
Jinzhu 14fdbdd965 AutoMigrate accepts structs 2014-08-20 11:56:39 +08:00
Shirou WAKAYAMA 5ad9306146 Add DropTableIfExists. 2014-08-05 23:14:40 +09:00
Jinzhu 4d98c8c0bc Specify database dialect when open database, fixes #169 2014-08-05 10:34:41 +08:00
Benjamin Ruston d699c85486 Use fmt.Errorf 2014-08-04 19:54:05 +01:00
Jinzhu 90106d82c5 Export Relationship 2014-07-31 14:38:16 +08:00
Jinzhu 2356182ea7 Rename joinTable to relationship 2014-07-30 20:59:52 +08:00
Jinzhu e1e68debdc improve association 2014-07-30 20:48:36 +08:00
Jinzhu ba95de5c50 Rename relations to associations 2014-07-30 14:30:21 +08:00
Jinzhu d7400c2df4 Don't sort by primary key if it doesn't exist in First/Last 2014-07-29 18:29:03 +08:00
Jinzhu 2bffb43138 Write stub code for Many2Many 2014-07-29 17:28:10 +08:00
Jinzhu 11dc47587c Support inline condition when Delete 2014-07-24 18:30:12 +08:00
Jinzhu 1c1df2318c Fix exception for FirstOrCreate when search condition is nil 2014-07-01 15:55:19 +08:00
Jinzhu 6c5b95e2b2 Return query error in FirstOrInit and FirstOrCreate 2014-06-23 20:10:54 +08:00
Vladimir Garvardt d2e526bc2d db.Create() for force insert with predefined primary key 2014-06-12 00:51:43 +04:00
Jinzhu f32fa0cb6e Add RowsAffected for DB 2014-06-05 17:58:14 +08:00
Vladimir Garvardt d1dc0ccbef AddUniqueIndex 2014-06-01 02:35:56 +04:00
Vladimir Garvardt cdce84fd1a AddIndex for multiple columns 2014-06-01 02:26:17 +04:00
Jinzhu 288c8e37af Merge branch 'sunfmin-master'
Conflicts:
	main.go
2014-04-25 07:23:26 +08:00
Jinzhu a46d149579 remove package dialect for easier contribution 2014-04-25 07:20:23 +08:00
Felix Sun 1ff3c79c75 When multiple databases have the same table name and column names, automigrate doesn't work 2014-04-25 00:39:38 +08:00
Jinzhu fd3ce3b39a Add method to close gorm db connection 2014-04-24 10:55:17 +08:00
Xavier Dumesnil 5e62e7fdad Include scope.TableName() in ORDER statement for First() & Last() 2014-04-10 16:29:09 +02:00
Timothy Stranex 42448cb5d6 Add DB.CommonDB() instead of DB.Tx(), as discussed in the PR thread. 2014-03-17 12:08:44 +02:00
Timothy Stranex a336f51444 Add DB.Tx() method to provice access to the underlying sql.Tx instance. 2014-03-16 18:24:32 +02:00
Jinzhu 2c33502503 Add tests for updated_at will be updated when update value with Assign 2014-02-18 10:03:14 +08:00
Jinzhu e2897f0c9b clone callback when call Callback 2014-01-29 10:25:58 +08:00
Jinzhu 036df5f46b Move scope_database to scope.go 2014-01-28 17:40:09 +08:00
Jinzhu 6f1dd5fae3 API for search 2014-01-28 16:56:51 +08:00
Jinzhu 2adbc4b8a6 move all code to scope 2014-01-28 15:54:19 +08:00
Jinzhu 05ce3d3933 related with plugin system 2014-01-28 12:28:44 +08:00
Jinzhu ae68c0fb47 make count works 2014-01-28 11:38:53 +08:00
Jinzhu 5fd2e0d54f make pluck works 2014-01-28 11:37:32 +08:00
Jinzhu 7a99f37ba4 Make exec works with plugin system 2014-01-28 10:29:12 +08:00
Jinzhu 7bebf685f4 refact 2014-01-28 10:23:31 +08:00
Jinzhu 275de4f133 Add method inlineCondition 2014-01-28 10:06:03 +08:00
Jinzhu 6e848fc987 move row, rows, scan to scope 2014-01-28 09:48:44 +08:00
Jinzhu 549d7a8af2 make first, last works with plugin system 2014-01-28 09:30:30 +08:00
Jinzhu db68e7a8fe make callback query works 2014-01-28 09:25:30 +08:00
Jinzhu 048b8b6abe make update column works with new plugin system 2014-01-28 08:27:12 +08:00
Jinzhu 506d14a2f2 make callback deletes works 2014-01-27 22:36:08 +08:00
Jinzhu 23feade663 use callback update when save 2014-01-27 11:25:55 +08:00
Jinzhu ee6a6827a8 implement callback shared 2014-01-27 08:26:59 +08:00
Jinzhu 7b8e91377b callback create.go 2014-01-26 21:23:53 +08:00
Jinzhu 8dd7b4ed91 make callback create works 2014-01-26 19:36:15 +08:00
Jinzhu 79cacf7f09 improve scope.go 2014-01-26 13:51:23 +08:00
Jinzhu 973acd6339 Add callback create, delete 2014-01-26 12:41:37 +08:00
Jinzhu 6bb7c8b744 Add callback.go 2014-01-23 16:43:39 +08:00
Jinzhu 66bfcec72e Initalize default logger when initalize DB 2014-01-04 15:32:44 +08:00
Jinzhu ccae2f0345 Update DB struct for plugin system 2014-01-04 15:08:00 +08:00
Jinzhu 4125526ef6 Improve Logger 2014-01-03 19:23:41 +08:00
Jinzhu 8010616e89 Add method Raw and Scan 2014-01-03 18:14:51 +08:00
Jinzhu 690cb1430c Show errors except RecordNotFound error by default for easy debug 2013-12-17 20:42:08 +08:00
Jinzhu e6a2273114 Remove method SetPool() in favour of sql package's builtin method, Use
it like this `db.DB().SetMaxIdleConns(10)`

So gorm don't need to care about compatibility problems, and you could
use latest `database/sql` features from latest releases without waiting gorm's support
2013-12-04 14:33:35 +08:00
Jinzhu 90a4581a7f Use method DB() to get database connection handle 2013-12-04 14:29:44 +08:00
Jinzhu 0e2bef7006 Add Method RecordNotFound() 2013-11-24 11:29:37 +08:00
Jinzhu 660ee1ed73 Add Method NewRecord 2013-11-23 21:38:31 +08:00
Jinzhu 87f493d080 Add Scopes Support 2013-11-18 14:35:44 +08:00
Jinzhu 1a2eef181a Add Method UpdateColumn, UpdateColumns 2013-11-17 21:44:11 +08:00
Jinzhu 5411291173 Rename UpdateColumn to ModifyColumn 2013-11-17 20:38:43 +08:00
Jinzhu c62568c089 Make Exec possible to accepts arguments 2013-11-17 16:47:39 +08:00
Jinzhu b41f2957fb Add method Group, Having 2013-11-17 13:29:01 +08:00
Jinzhu 094a546815 Update README 2013-11-17 12:02:22 +08:00
Jinzhu bf1db1534e Use channel to make gorm faster 2013-11-17 09:50:34 +08:00
Jinzhu 0ad707b410 Yay, all tests passed 2013-11-16 18:42:47 +08:00
Jinzhu 38f7ecdf15 Better do.go 2013-11-16 17:39:09 +08:00
Jinzhu e0d3100294 Should copy DB when save, update, delete 2013-11-16 14:15:33 +08:00
Jinzhu c3d2746912 Copy search when init do 2013-11-16 13:19:29 +08:00
Jinzhu cc03f438ef Add Update, Updates back 2013-11-16 12:19:35 +08:00
Jinzhu ea67d1d377 Move non-public DB method to private.go 2013-11-16 11:41:31 +08:00
Jinzhu 3cfa19b761 Move all chain method to main.go 2013-11-16 11:36:30 +08:00
Jinzhu 85109e104e Rename some interfaces 2013-11-16 08:15:21 +08:00
Jinzhu 2d85c30fde Add search condition 2013-11-15 22:29:42 +08:00
Jinzhu 5ded927a9a change method NewDialect to New 2013-11-15 19:43:45 +08:00
Jinzhu c1c13129f1 Finish dialects 2013-11-14 19:09:27 +08:00
Jinzhu ac4b2e2a42 Initalize dialects 2013-11-14 17:35:23 +08:00
Jinzhu c03999a44e Add Tag Support 2013-11-14 00:03:31 +08:00
Jinzhu 32562b5537 Better Log support 2013-11-11 15:48:31 +08:00
Jinzhu 1c49c4ef85 Don't copy unnecessary variables 2013-11-11 13:40:35 +08:00
Jinzhu d550315548 Add Transaction Support 2013-11-11 13:16:24 +08:00
Jinzhu 9bc11d6637 Support Logger 2013-11-11 11:11:49 +08:00
Jinzhu 9e762a9a30 Try to add logger 2013-11-11 09:10:16 +08:00
Jinzhu 874856a592 Cleanup unused code 2013-11-10 23:07:09 +08:00
Jinzhu 0cb1c1ba32 Remove unnecessary field 2013-11-10 22:29:53 +08:00
Jinzhu 5da8461161 auto migrate 2013-11-07 09:09:54 +08:00
Jinzhu da6ffd52dd Add Method SingularTable 2013-11-06 21:43:41 +08:00
Jinzhu e78c10690b Add Last Method, And update README for method First, Find 2013-11-04 17:58:56 +08:00
Jinzhu 49cfb0d4a0 Add DropTable 2013-11-01 15:01:39 +08:00
Jinzhu 724ffec683 Add Method Not 2013-10-31 17:31:00 +08:00
Jinzhu 549c7450ea Make it easy when only change one field with Attr, Assign 2013-10-31 12:59:04 +08:00
Jinzhu 688e992266 Add method Assign 2013-10-31 08:15:19 +08:00
Jinzhu 0a47d75870 Add support for Attrs 2013-10-30 15:21:58 +08:00
Jinzhu 94bd2eb8d5 Add Debug Mode 2013-10-29 19:39:59 +08:00
Jinzhu 2e84f3b216 Initialize method FirstOrInit, FirstOrCreate 2013-10-29 18:02:28 +08:00
Jinzhu 7e5dc40f6f Don't do real delete when deleted_at column exist 2013-10-29 09:01:48 +08:00
Jinzhu bc785a9173 Cleanup code 2013-10-29 08:41:07 +08:00
Jinzhu 2a20e551ed Possible to specify table name 2013-10-28 20:27:25 +08:00
Jinzhu 2388dacfe3 Hidden unnecessary public fields 2013-10-28 12:52:06 +08:00
Jinzhu 5de6416354 Clean up dependencies 2013-10-28 12:46:50 +08:00
Jinzhu c412729570 Update README 2013-10-28 10:10:02 +08:00
Jinzhu f74c9015a1 Inline which condition for first/find 2013-10-27 20:54:56 +08:00
Jinzhu f892a52cad Refact 2013-10-27 19:47:15 +08:00
Jinzhu 244b27a6a0 Refact main.go 2013-10-27 08:06:01 +08:00
Jinzhu 9d2f7650be Refact tests 2013-10-27 07:38:08 +08:00
Jinzhu 96128cdec3 Fix where chain 2013-10-27 02:53:31 +08:00
Jinzhu 3c68efc94a Support create table with struct 2013-10-26 17:30:34 +08:00
Jinzhu 70315e8fed Create table method 2013-10-26 15:47:30 +08:00
Jinzhu 540345f552 Add more dummy code for orm.go 2013-10-26 07:14:57 +08:00
Jinzhu 7f9d486d5a Initialize the tests 2013-10-25 22:31:56 +08:00
Jinzhu 7f73480a35 Build basic architecture 2013-10-25 18:31:10 +08:00
Jinzhu 2d6fa2c96d init files 2013-10-25 18:04:48 +08:00