mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 16:30:25 +08:00 
			
		
		
		
	
		
			
	
	
		
			39 lines
		
	
	
		
			801 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			801 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package sqlite
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								import (
							 | 
						|||
| 
								 | 
							
									"database/sql"
							 | 
						|||
| 
								 | 
							
									"errors"
							 | 
						|||
| 
								 | 
							
									_ "github.com/mattn/go-sqlite3"
							 | 
						|||
| 
								 | 
							
									"mayfly-go/internal/db/dbm/dbi"
							 | 
						|||
| 
								 | 
							
									"os"
							 | 
						|||
| 
								 | 
							
									"sync"
							 | 
						|||
| 
								 | 
							
								)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								var (
							 | 
						|||
| 
								 | 
							
									meta dbi.Meta
							 | 
						|||
| 
								 | 
							
									once sync.Once
							 | 
						|||
| 
								 | 
							
								)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								func GetMeta() dbi.Meta {
							 | 
						|||
| 
								 | 
							
									once.Do(func() {
							 | 
						|||
| 
								 | 
							
										meta = new(SqliteMeta)
							 | 
						|||
| 
								 | 
							
									})
							 | 
						|||
| 
								 | 
							
									return meta
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type SqliteMeta struct {
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								func (md *SqliteMeta) GetSqlDb(d *dbi.DbInfo) (*sql.DB, error) {
							 | 
						|||
| 
								 | 
							
									// 用host字段来存sqlite的文件路径
							 | 
						|||
| 
								 | 
							
									// 检查文件是否存在,否则报错,基于sqlite会自动创建文件,为了服务器文件安全,所以先确定文件存在再连接,不自动创建
							 | 
						|||
| 
								 | 
							
									if _, err := os.Stat(d.Host); err != nil {
							 | 
						|||
| 
								 | 
							
										return nil, errors.New("数据库文件不存在")
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return sql.Open("sqlite3", d.Host)
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								func (md *SqliteMeta) GetDialect(conn *dbi.DbConn) dbi.Dialect {
							 | 
						|||
| 
								 | 
							
									return &SqliteDialect{conn}
							 | 
						|||
| 
								 | 
							
								}
							 |