Commit graph

282 commits

Author SHA1 Message Date
Aaron L
59c238539d Attach all eagerly loaded models in to-one
- The problem here is that due to the nature of the relationship and the
  way the loop was set up it was possible to miss some relationships:

A _ C
 \_ D

B _ E
 \_ F

Since we looped over A and B and did a break when we found something to
attach it to (in this example A would find C) it would break. What we
should be looping through is CDEF and finding a home for each one.

Did the same change in to_one though it doesn't matter since it's
one-to-one.

to-many is untouched because it's already looping over CDEF and finding
a home for it because the relationship is reversed.

- Fix #98
2017-01-26 22:06:47 -08:00
Aaron L
c02a2f0c20 Fix null dereference 2017-01-24 23:04:59 -08:00
Aaron L
936df65ebc Fix ToManyRemoveOp
- This would generate a bad query when run, also the test was failing
  for this same reason and once enabled it was trivial to fix.
2017-01-24 22:45:20 -08:00
Aaron L
c33bb479a1 Fix postgres placeholders for to-many.RemoveX
- Help fix #97
2017-01-24 18:57:45 -08:00
Aaron L
61ab7e254a Add missing function variants for setops.
- Fix #87
2017-01-09 21:06:47 -08:00
Aaron L
22f7a45847 Ignore empty errors on postgres upsert fail
- Postgres's behavior when there is no update is that there is an
  ErrNoRows thrown back, which we can safely ignore since the only time
  this can happen in postgres's case is under this circumstance since
  there's no race unlike the mysql upsert code.
- Fix #84
2017-01-05 21:31:43 -08:00
Aaron L
4ae9336538 Fix bug in ToManySetOpsAdd and impure join tables
- This is a bug that manifests itself a bunch with our update code where
  you cannot actually use the update method to update a key since it
  uses the values on the struct to both update the values and find the
  object to update but in this operation the key must have two different
  values.
2017-01-04 20:31:29 -08:00
Aaron L
b6b16b8dd6 Fix combining relationship query mods
- Fix #67
2016-11-15 21:57:21 -08:00
Aaron L
ede97dea5b Add enum const generation
- Make postgres name its enums
- Add way to filter columns by whether or not they're an enum
- Split parsing of enums into name & values
- Add strmangle check functions: IsEnumNormal, ShouldTitleCaseEnum
- Add new strmangle enum functions to template test
- Implement a set type called "once" inside the templates so that we can
  ensure certain things only generate one time via some unique name.
2016-11-11 01:06:30 -08:00
Aaron L
3046214fb6 Ensure that relationship structs aren't clobbered
- There was no thought put in if a relationship struct already existed
  when it went to be used a second time so it was being clobbered.
- Fix #39
2016-11-08 18:25:15 -08:00
Aaron L
2c534361e1 When .LoadX gets called, create R structs
- Fix #51
- This is a waste of allocations, but in general makes for a much nicer
  user interface.
2016-09-29 19:32:43 -07:00
Aaron L
32290d9236 Fix mysql LastInsertId() 2016-09-24 16:10:26 -07:00
Aaron L
5f394a4f69 Fix one-to-one setops 2016-09-24 14:34:31 -07:00
Aaron L
09ed5709e5 Fix template spacing with new output
- The old templates used to output \n\n after each run, with the
  previous changes this is no longer the case and as such the templates
  all must be formatted correctly.
2016-09-24 00:52:18 -07:00
Aaron L
e9eda8fa1b Revert "Copy to_one_setops into one_to_one_setops"
This reverts commit e157a59714.
2016-09-24 00:23:17 -07:00
Patrick O'brien
e157a59714 Copy to_one_setops into one_to_one_setops 2016-09-24 12:42:39 +10:00
Aaron L
fa2202abb2 Fix SetOp for half join tables 2016-09-22 23:17:54 -07:00
Aaron L
0530ba9227 Rename $rel -> $txt for consistency 2016-09-22 21:49:50 -07:00
Aaron L
d438ce5fc1 Remove a couple seldom used vars 2016-09-22 00:21:12 -07:00
Aaron L
093db148e3 Change text helpers to use refactored func naming
- This cleans up the function naming so it's easier to follow in all
  cases. Provides better tests for the same.
2016-09-22 00:21:12 -07:00
Aaron L
b0cdc29c61 Remove unused template variables 2016-09-20 21:56:06 -07:00
Aaron L
cbb7041748 Fix #43 in a slightly different way. 2016-09-20 21:22:35 -07:00
Aaron L
79a228e297 Fixed some lint errors where spacing got messed up 2016-09-20 21:18:15 -07:00
Aaron L
b1344befe2 Change 'if eq .NoHooks false' -> 'if not .NoHooks' 2016-09-20 21:08:19 -07:00
Aaron L
5ba6769134 Remove unuseful text helper variable 2016-09-20 21:08:19 -07:00
Patrick O'brien
522cb6824c Fix receiver lint errs 2016-09-21 13:38:14 +10:00
Patrick O'brien
0a1a12cd0a Primary key only tables are now handled adequately 2016-09-20 18:05:33 +10:00
Patrick O'brien
9102327b1c Remove rowsaffected as 0 error 2016-09-20 13:20:33 +10:00
Patrick O'brien
fdeecbf106 Fix insert and randomize errors, fix time.Time
* MySQL requires timeParsing enabled
* Update readme to reflect this requirement
2016-09-19 15:22:32 +10:00
Aaron L
a164540276 Remove temp files 2016-09-18 17:45:29 -07:00
Aaron L
c9eca3d9a8 Fix remaining to one tests 2016-09-18 17:43:44 -07:00
Aaron L
cc7a960943 Begin re-enabling one-to-one 2016-09-18 16:49:18 -07:00
Aaron L
69e07b9a05 File shuffle 2016-09-18 16:41:04 -07:00
Aaron L
34b30ce6c3 Make templates generate again 2016-09-18 16:02:08 -07:00
Aaron L
1eb1ed10cf Fix last few bugs with find replacing 2016-09-18 11:21:26 -07:00
Aaron L
b39a5f0dad Fix struct generation 2016-09-18 11:18:55 -07:00
Aaron L
f00230c414 Fix names of txt helper functions in templates 2016-09-18 11:18:43 -07:00
Aaron L
4e20f223cd Put these aside for a minute 2016-09-18 11:14:21 -07:00
Aaron L
11098a95c3 Remove hacks from to_one 2016-09-18 11:13:22 -07:00
Aaron L
55e0ae5736 Add broken files that we'll need 2016-09-18 10:34:54 -07:00
Aaron L
81494a91d0 Remove one-to-one 2016-09-17 23:50:31 -07:00
Aaron L
9bc5b3fa40 Fix one-to-one in many areas 2016-09-17 22:10:19 -07:00
Aaron L
1375634f71 Add more to the postgres schema test
- Fix a bug in generation where it uses bytes
2016-09-17 21:00:47 -07:00
Aaron L
afe2665e52 Clean up the bytes checks with text helpers 2016-09-17 00:02:03 -07:00
Aaron L
69a59043c8 Revert "Fix compare against null.Bytes"
This reverts commit bbd9277e0e.
2016-09-16 23:04:58 -07:00
Patrick O'brien
bbd9277e0e Fix compare against null.Bytes 2016-09-17 14:32:19 +10:00
Patrick O'brien
6c13b63500 Fix non-int comparisons 2016-09-17 13:13:44 +10:00
Aaron L
32561717b1 Clean up the byte primary key stuff 2016-09-16 08:02:32 -07:00
Aaron L
c624943f53 Make a rough sketch of what this would look like
Needs cleanup: Do not merge
2016-09-16 00:22:12 -07:00
Aaron L
a426f09a75 Remove helpers in favor of more optimized paths 2016-09-15 23:44:44 -07:00
Aaron L
b0b0ff87c6 Fix MySQL return query optimization.
- Before, this could erroneously detect that it could do without the
  return query because it thought all we wanted was the id. Now with
  this fix it should properly discard the query when all we want is id.
2016-09-15 22:28:23 -07:00
Aaron L
bac82b6f0e Correct caching for upserts with no returns
- Previously it would return early, and therefore no caching was being
  performed since it would never write to the cache.
2016-09-15 22:17:37 -07:00
Aaron L
440e3a1343 Fix cache keying for upsert
- Previously the non-zero default columns were not taken into account
  and therefore this cached too aggressively.
2016-09-15 22:08:45 -07:00
Aaron L
09eeef63af Optimize upsert. 2016-09-14 23:06:06 -07:00
Patrick O'brien
0abfe1cba6 Fix upsert if else 2016-09-15 14:59:48 +10:00
Patrick O'brien
b3230c2757 Fix insert with goto 2016-09-15 14:46:03 +10:00
Patrick O'brien
e52fac9c5e Fix indentation 2016-09-15 14:27:06 +10:00
Patrick O'brien
01f08efe8a Fix lint errors for generated package 2016-09-15 14:21:33 +10:00
Aaron L
f803cdd6bd Fix all references to moved elements. 2016-09-14 21:02:24 -07:00
Patrick O'brien
f6b4d3c6fd Rename exec funcs to conform to sql stdlib 2016-09-15 02:14:30 +10:00
Patrick O'brien
1c28f761f1 Upsert fixed 2016-09-15 01:36:36 +10:00
Patrick O'brien
931f3d2de5 Fix mock driver compat with upsert 2016-09-14 18:27:20 +10:00
Patrick O'brien
83f7092dc6 Add MySQL Upsert, fix identation in all tpls 2016-09-14 18:14:07 +10:00
Aaron L
a86e794b61 Fix composite primary keys for DeleteAll 2016-09-13 17:20:13 -07:00
Patrick O'brien
91bb5ee940 Change Exec funcs to methods with Query receiver 2016-09-13 19:46:32 +10:00
Aaron L
1facccacc1 Fix an edge case for MySQL
- This patch removes auto-generation of queries that have the pattern
  COUNT(tablename.*) which is a syntax error in mysql.
2016-09-13 00:48:14 -07:00
Aaron L
b1e8816d42 Fix update all 2016-09-12 23:49:18 -07:00
Aaron L
912693a124 Update parameter generation for mysql 2016-09-12 23:28:23 -07:00
Aaron L
37a05de380 Fix a mistake in the insert query 2016-09-11 23:50:11 -07:00
Aaron L
8392a4ba2a Fix quoting throughout templates
- Use "" style strings for all templates
- Attach a Quote and SchemaTable that understand escaped quotes so we
  can use "" style strings without repercussion.
- Make SchemaTable use escaped quotes
- Remove schemaTable from the templates in favor of .SchemaTable
2016-09-11 23:50:11 -07:00
Patrick O'brien
793522650c Add lq, rq, and indexplaceholders args everywhere 2016-09-10 05:15:50 +10:00
Patrick O'brien
419f2760c7 Change quotes to bytes 2016-09-10 03:30:46 +10:00
Patrick O'brien
9e6a3d5ee3 Add quote dialects 2016-09-10 03:14:18 +10:00
Patrick O'brien
ac02f7d2e0 Fix broken relationship templates by adding schema 2016-09-09 22:31:51 +10:00
Patrick O'brien
1c8a9d2e39 Add schema feature to everything (except rels)
* Add strmangle SchemaTable helper
2016-09-09 07:23:10 +10:00
Patrick O'brien
4e8191b8dd Add struct tags flag 2016-09-04 23:44:54 +10:00
Aaron L
22f67ab4ed Make sure to only write to cache when needed 2016-09-03 23:46:21 -07:00
Aaron L
ecfa35350c Finish update optimization. 2016-09-03 22:53:42 -07:00
Aaron L
0ebccdb20a Try and fix MySQL a little bit. 2016-09-03 12:50:31 -07:00
Aaron L
acad9f7de5 Finish Insert() caching. 2016-09-03 12:47:27 -07:00
Aaron L
793306d749 Fit caching in to insert. 2016-09-03 12:24:18 -07:00
Aaron L
e1bfd9d0da Remove TitleCases from NonZeroDefaultSet 2016-09-03 11:54:23 -07:00
Aaron L
b522ab6a75 Fix spacing in setop methods. 2016-09-03 11:04:37 -07:00
Patrick O'brien
09fb8005f6 Add TitleCase cache 2016-09-02 17:55:16 +10:00
Aaron L
b101df0a24 Make sure join tables get ToMany Set/Remove 2016-09-01 23:33:18 -07:00
Patrick O'brien
4b1c934751 Remove pointers to L, not needed
* Add no-tests flag
2016-09-02 11:22:56 +10:00
Patrick O'brien
fd07a1a6a7 Move loaders off R to a new struct L 2016-09-02 11:03:59 +10:00
Aaron L
b5d3b60b3a ToOne Set Remove no longer uses ... 2016-08-31 21:38:25 -07:00
Patrick O'brien
67ae024439 Unexport Relationship struct 2016-09-01 13:33:05 +10:00
Patrick O'brien
d56e28a36d Fix Location pointer 2016-09-01 11:24:39 +10:00
Patrick O'brien
8f6191c4d2 Move buildUpsertQuery to boil 2016-09-01 11:20:16 +10:00
Patrick O'brien
87b1f90c43 Fix Find name 2016-09-01 11:16:21 +10:00
Patrick O'brien
e33da59f0b Update hook names 2016-09-01 11:12:46 +10:00
Aaron L
79d8642d8d Put setops into their final resting place. 2016-08-29 22:58:55 -07:00
Patrick O'brien
629ec8c8d0 Add hooks to eager load funcs
* Add PreserveDots text helper
* Fix bug using wrong XTitleCases name
2016-08-30 02:36:07 +10:00
Patrick O'brien
ccdfc93fee Add auto timestamps for upsert
* Add IsZero checks for auto timestamps
2016-08-29 23:23:42 +10:00
Patrick O'brien
7f24185544 Add executor to hooks 2016-08-29 23:23:42 +10:00
Aaron L
9553f462c7 Merge branch 'sets' 2016-08-28 23:29:47 -07:00
Aaron L
ae99b2a649 Finish ToManyRemove.
- Make Set test better.
2016-08-28 23:26:44 -07:00
Aaron L
d9931fe7ba Finish Set 2016-08-28 21:12:04 -07:00